How to write button onClick method in viewpager?

I want the Toast message on the button using the viewpager also want more information on how to access views in the viewpager.

I tried the following code .... does not work

public class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { return 3; } @Override public Object instantiateItem(final View collection, final int position) { v = new View(collection.getContext()); LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resId = 0; switch (position) { case 0: resId = R.layout.cate1; v = inflater.inflate(R.layout.cate1, null, false); add1 = (Button) v.findViewById(R.id.btnAdd); add1.setOnClickListener( new OnClickListener() { public void onClick(View m) { Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show(); } }); break; case 1: resId = R.layout.cate2; break; case 2: resId = R.layout.cate3; break; } View view = inflater.inflate(resId, null); ((ViewPager) collection).addView(view, 0); return view; } @Override public void destroyItem(final View arg0, final int arg1, final Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(final View arg0, final Object arg1) { return arg0 == ((View) arg1); } @Override public void finishUpdate(View arg0) { // TODO Auto-generated method stub } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { // TODO Auto-generated method stub } @Override public Parcelable saveState() { // TODO Auto-generated method stub return null; } @Override public void startUpdate(View arg0) { // TODO Auto-generated method stub } } 

I wrote the following code for the onclick button .... doesn't work ..

  v = inflater.inflate(R.layout.cate1, null, false); add1 = (Button) v.findViewById(R.id.btnAdd); add1.setOnClickListener( new OnClickListener() { public void onClick(View m) { Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show(); } }); 

Plz help thanks in advance.

+4
source share
1 answer

Leave your code anyway, but change:

  ((ViewPager) collection).addView(view, 0); return view; 

to

  ((ViewPager) collection).addView(v, 0); return v; 

you made onclick right on the button that was inflated, then you inflated another kind of iwth resId and displayed it on the screen, this button exists in the memory of your application, but not somewhere else, returning v, this draw and onclicklistener button is called when pressed.

+3
source

Source: https://habr.com/ru/post/1388899/


All Articles