您的位置:首页 > 其它

ViewPager 笔记

2016-04-06 11:10 183 查看
转载 http://blog.csdn.net/yan8024/article/details/47024117
提供一个适配器用于填充ViewPager页面. 你很可能想要使用一个更加具体的实现, 例如: FragmentPagerAdapter or FragmentStatePagerAdapter.

当你实现一个PagerAdapter时,至少需要覆盖以下几个方法

instantiateItem(ViewGroup, int)

这个函数的实现的功能是创建指定位置的页面视图.适配器有责任增加即将创建的View视图到这里给定的container中,这是为了确保在finishUpdate(viewGroup)返回时this is be done!返回值:返回一个代表新增视图页面的Object(Key),这里没必要非要返回视图本身,也可以这个页面的其它容器。其实我的理解是可以代表当前页面的任意值,只要你可以与你增加的View一一对应即可,比如position变量也可以做为Key(最后我们举个例子试试可不可行)

destroyItem(ViewGroup, int, Object)

该方法实现的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图

getCount()

返回当前有效视图的个数

isViewFromObject(View, Object)

该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图

public class PayKeyAdpater extends PagerAdapter {

private ImageView ivKeyImage;
private List<ImageView> ivKeyImageList;

public ViewPager vpKeyView;
private  Context objContext;

public PayKeyAdpater(Context context,ViewPager vp,List<ImageView> imageList) {

ivKeyImageList = imageList;

objContext = context;
vpKeyView = vp;

}

@Override
public int getCount() {
return Integer.MAX_VALUE;
//  return ivKeyImageList.size();
}

/**
* 官方提示这么写
* View是拖动的对象
* object 是下面instantiateItem返回的对象  看是否是object是View只有他们关联才可以去查询当前的info
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}

/**
* 加载item
*
*/
@Override
public Object instantiateItem(ViewGroup container, int position)
{

position=position%ivKeyImageList.size();   //得到当前的第几个
vpKeyView.addView(ivKeyImageList.get(position));   //添加那个view到vp

//container.addView(ivKeyImageList.get(position), 0);//添加页卡
return ivKeyImageList.get(position);
}

/**
* 销毁对象
* position 被销毁的对象的索引
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {

position=position%ivKeyImageList.size();
vpKeyView.removeView(ivKeyImageList.get(position));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: