Android ViewPager设置监听注意事项


首先 implements View.OnClickListener

因为Item比较多用这个方便

设置监听要注意地方,如果在 onCreate 直接 findViewById布局里的ID是会出错的

参考下面代码

    private void initAllViewPager() {
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        //
        LayoutInflater inflater = getLayoutInflater();
        view1 = inflater.inflate(R.layout.test_page1, null);
        view2 = inflater.inflate(R.layout.test_page2, null); // gridview demo.
        //view3 = inflater.inflate(R.layout.test_page3, null);
        //view4 = inflater.inflate(R.layout.test_page4, null);
        viewList = new ArrayList<View>();// 将要分页显示的View装入数组中
        viewList.add(view1);
        viewList.add(view2);
        //viewList.add(view3);
        //viewList.add(view4);


        viewpager.setAdapter(new DemoPagerAdapter());

        view1.findViewById(R.id.page1_item0).setOnClickListener(this);
        view1.findViewById(R.id.page1_item1).setOnClickListener(this);

}

设置监听在 setAdapter 前后都可以

另外一种方法是在 PagerAdapter 的 public Object instantiateItem(ViewGroup container, int position) 

里添加如下

        public Object instantiateItem(ViewGroup container, int position) {
            viewList.get(0).findViewById(R.id.page1_item3).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this,"Click ok", Toast.LENGTH_SHORT).show();
                };
            });
                
            container.addView(viewList.get(position));


            return viewList.get(position);
        };

 

这个是按List来查找ID设置监听,或者

        public Object instantiateItem(ViewGroup container, int position) {
            reflectitemview= (ReflectItemView) findViewById(R.id.page1_item3);
            reflectitemview.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    Toast.makeText(MainActivity.this,"Click ok", Toast.LENGTH_SHORT).show();
                }
            });

            container.addView(viewList.get(position));


            return viewList.get(position);
        };

    }

 

第一种方法方便


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM