本文主要是介绍ViewPager的重用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实现重用,对 ImageView效果不好,准确的说是大图,会oom,最好自定义ImageView对图片手动释放
ViewPager一次最多生成6个View,除去初始化的时候,有3个view是一直存在的,切换时生成第4个view,切换完成时移除第1个;跳转时会生成6个view,跳转完成时移除前3个view
private class ViewPagerAdapter extends PagerAdapter {
private SparseArray<View> addList;
private List<View> removeList;
public ViewPagerAdapter(){
addList = new SparseArray<>();
removeList = new ArrayList<>();
}@Override
public int getCount() {
return 50;
}@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = addList.get(position);
container.removeView(view);
addList.remove(position);//删除页面不使用的View
removeList.add(view);//不使用的View添加到removeList里
}@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = null;
if(removeList.size() != 0){
view = removeList.get(0);//当removeList有View时提取
removeList.remove(0);
}
view = getView(container,view,position);
addList.put(position,view);//添加到addList里
container.addView(view);
return view;
}public View getView(ViewGroup container,View view, int position){
//此处和ListView写法一样return view;
}
}
这篇关于ViewPager的重用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!