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