Viewpager Onitemclicklistener

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



Leave a reply



Submit