首先 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); }; }
第一种方法方便