Correctly implementing PagerAdapter in Android

前端 未结 2 852
无人及你
无人及你 2020-12-09 11:59

I have problems with implementation of my custom PagerAdapter and using it with a ViewPager. This sample PagerAdapter has 10 items, every item is a button with it\'s index a

2条回答
  •  醉酒成梦
    2020-12-09 12:41

    if you want to inflate views in pager you must have to implement two methods. instantiateItem and destroyItem

    public class DialogPagerAdapter extends PagerAdapter {
    
        private Context mContext;
    
        //view inflating..
        @Override
        public Object instantiateItem(ViewGroup collection, int position) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.account_dialog_signin_viewpagers,
                    collection, false);
    
            TextView tvLabel = (TextView) layout.findViewById(R.id.textView);
            switch (position) {
                case 0:
                    tvLabel.setText("Log In");
                    tvLabel.setOnClickListener(new View.OnClickListener() {
    
                        @Override
                        public void onClick(View v) {
                        }
                    });
                    break;
                case 1:
                    tvLabel.setText("Sign Up");
                    tvLabel.setOnClickListener(new View.OnClickListener() {
    
                        @Override
                        public void onClick(View v) {
                        }
                    });
                    break;
                case 2:
                    tvLabel.setText("Send Reset Link");
                    tvLabel.setOnClickListener(new View.OnClickListener() {
    
                        @Override
                        public void onClick(View v) {
                            //onOptionClickForgot.OnOptionClick();
                        }
                    });
                    break;
            }
    
            collection.addView(layout);
            return layout;
        }
    
        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            collection.removeView((View) view);
    }
    
        @Override
        public int getCount() {
            return 3;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    }
    

    Simply call it like

    viewPager.setAdapter(new DialogPagerAdapter);
    

    xml

    
    
        
    
    

提交回复
热议问题