ViewPager OnItemClickListener
There is no OnItemClick callback method for ViewPager. If you want click events on each page then you'll have to build your listener into the page content within your Adapter.
something like this:
@Override
public Object instantiateItem(View collection, final int pos) { //have to make final so we can see it inside of onClick()
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View page = inflater.inflate(R.layout.YOUR_PAGE, null);
page.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//this will log the page number that was click
Log.i("TAG", "This page was clicked: " + pos);
}
});
((ViewPager) collection).addView(page, 0);
return page;
}
exactly what you need will depend a bit on what else you are doing inside of instantiateItem()
which you haven't posted so I can't give you a more specific answer.
OnItemClickListener for RecyclerView in ViewPager
Move
mNewsAdapter.setOnItemClickListener(new NewsAdapter.ClickListener() {
@Override
public void onItemClick(int position, View v) {
News currentNews = news.get(position);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(currentNews.getUrl()));
if (intent.resolveActivity(getActivity().getPackageManager()) != null){
startActivity(intent);
}
}
});
after
mNewsAdapter = new NewsAdapter(news);
How to set OnClickListener in ViewPager
Here is an easy solution.
In your layout XML, in the button tag, set android:onClick="AnyName"
, then on your PagerDemo.java
, place:
public void AnyName(View v) {
// Do your stuff
}
That sets onClickListener
in a ViewPager
.
OnItemClickListener doesnt get called when using ViewPager in a Listview
You're close, but instead of setting an onClickListener
on the ViewPager
itself, you must set an onClickListener
to the view in the ViewPager
's PagerAdapter
(which you must extend).
In your ListView
's getView()
, where you instantiate the ViewPager
, set an adapter to your PagerAdapter (here called "ExtendedPagerAdapter):
ViewPager pager = (ViewPager) container.findViewById(R.id.pager);
ExtendedPagerAdapter adapter = new ExtendedPagerAdapter(context, list);
pager.setAdapter(adapter);
Then, in your ExtendedPagerAdapter class, you override (among other things) instantiateItem(ViewGroup, int)
.
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View theView = list.get(position).getView(inflater);
theView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//perform action
}
});
container.addView(theView, 0);
return theView;
}
Use OnItemClickListener in ListView inside ViewPager
I think the issue can be caused by listView items. If your listView items contains clickable views (buttons, check boxes etc.) your OnItemClickListener will not be called.
Viewpager wrong OnItemClick position
The problem was with the viewholder class, there was no data binding inside it. So when i clicked on any item inside the viewholder, it performed the action on the current adapter's data (preloaded data).
the viewholder class should be something like this:
public ViewHolder(View itemView) {
super(itemView);
share = (ImageView) itemView.findViewById(R.id.share);
}
public void bindToPost(Post post, View.OnClickListener onClickListener) {
share.setOnClickListener(onClickListener);
}
Related Topics
Creating a Directory in /Sdcard Fails
Android Take Screen Shot Programmatically
What Is the Purpose of Android's <Merge> Tag in Xml Layouts
Progressdialog Is Deprecated.What Is the Alternate One to Use
Removing Unused Strings During Proguard Optimisation
How to Open an Android Studio Project in Eclipse
Error Strictmode$Androidblockguardpolicy.Onnetwork
How to Force the Action Bar to Be at the Bottom in Ics
Visual Studio (2015) Emulator for Android Not Working - Xde.Exe - Exit Code 3
How to Get Access Token After User Is Signed in from Gmail in Android
Android:Static Fields and Memory Leaks
Error: Status{Statuscode=Developer_Error, Resolution=Null}
How to Open a PDF via Intent from Sd Card
How to Set Time to Device Programmatically
Dex Error on Android Studio 3.0 Beta4
Implementing User Choice of Theme
How to Implement a Listview Without Listactivity? (Use Only Activity)