你的位置:首页 > 操作系统

[操作系统]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);    };  }

 

第一种方法方便