用法:数据ImageView+自定义适配器+ViewPager控件
1 添加ViewPager
在Activity的XML布局文件中添加一个控件——ViewPager。
在Java代码中找控件ViewPager。
2 创建Adapter类
继承PagerAdapter类,重写必须重写的两个方法getCount和isViewFromObject。
并ctrl+o,重写两个生成控件和销毁控件的两个方法。
instantiateItem和destroyItem。
3 在Adapter类中准备数据
此处我们只展示一个图片ImageView。
即List<ImageView>。
4 重写适配器中的方法
4.1 重写getCount
获取列表中元素的个数。
public int getCount(){ return mImageViewList==null?0:mImageViewList.size(); }
4.2 重写isViewFromObject
判断这个View和Object是不是同一个东西。而这个Object是什么,就是下一个要重写的instantiateItem方法的返回值。View就是这一页。
public boolean isViewFromObject(View view,Object object){ return view==object; }
4.3 重写instantiateItem
生成一页,也就是ImageView,也就是List列表中的一项。
而整个List就相当于一个ViewPager。
public Object instantiateItem(ViewGroup container,int position){ //从列表中获取元素 ImageView imageView=mImageViewList.get(position); //把此元素放入ViewGroup中 container.addView(imageView); //返回此元素 return imageView; }
4.4 重写destroyItem
当从这一页划到另外一页时,前面那一页应该被销毁。
public void destroyItem(ViewGroup container,int position,Object object){ super.destroyItem(container,position,object); //从ViewGroup中移除 container.removeView((View)object); }
4.5 实例化
public Adapter(List<ImageView> imageViewList){ mImageViewList=imageViewList; }
5 回到Avtivity,实例化适配器对象
准备数据并传入。
private void intiData(){ ImageView imageView1=new ImageView(this); imageView1.setImageResource(R.id.xxx); ImageView imageView2=new ImageView(this); imageView2.setImageResource(R.id.xxx); ImageView imageView3=new ImageView(this); imageView3.setImageResource(R.id.xxx); mImageViews=new ArrayList<>(); mImageViews.add(imageView1); mImageViews.add(imageView2); mImageViews.add(imageView3); }
6 主运行代码
先进行第五步的数据初始化。先进行第五步的数据初始化。
然后创建适配器对象。
然后给ViewPager设置适配器。
然后有必要的时候给ViewPager添加监听addOnPageChangeListener(new ViewPager.OnpageChangeLisgener()),有三个回调方法,最常用的是第二个onPageSelected(),
就是划定到某一页就会触发。