可复用View的PagerAdapter,RecyclePagerAdapter
来源:互联网 发布:软件测试管理方法 编辑:程序博客网 时间:2024/06/06 03:24
参考:http://mosthink.net/?p=210
import android.support.v4.view.PagerAdapter;import android.util.SparseArray;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.List;/** * 命名跟ListView的Adapter留下的接口名一样。 * 内部实现是维护一个View池来保存被destroyItem销毁的View,在instantiateItem的时候先看池子里有没有闲置可用的View。 * 使用这个View池的代码如下: */public abstract class RecyclePagerAdapter extends PagerAdapter { private SparseArray<View> mPageViews = new SparseArray<View>(); /** * 获取view方法,子类实现这个方法来获取渲染View * * @param convertView 如果是null则没有可复用的View,如果非null则是可复用的View * @param position * @return */ protected abstract View getView(View convertView, int position); @Override public Object instantiateItem(ViewGroup container, int position) { // 获取复用的view给子类去用,没有可复用的view时为null //pullViewFromPool()就是传给实现类的convertView View view = getView(pullViewFromPool(), position); // 记录该view以在destroyItem中能找到 mPageViews.put(position, view); // 添加到view pager container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = mPageViews.get(position); // 把要删除的view放到pool里以供复用 pushViewToPool(view); // 从view pager中删除 container.removeView(view); } //View池的实现如下: //View池数据结构 private List<View> mPageViewPool = new ArrayList<View>(); //从池子里拿View private View pullViewFromPool() { View view = null; for (View v : mPageViewPool) { view = v; break; } if (view != null) { mPageViewPool.remove(view); } return view; } //把View倒进池子 private void pushViewToPool(View view) { if (!mPageViewPool.contains(view)) { mPageViewPool.add(view); } }}
0 0
- 可复用View的PagerAdapter,RecyclePagerAdapter
- [Widget]RecyclePagerAdapter-实现ViewPager复用回收的PagerAdapter
- viewpager-----View作为ViewPager的数据源(PagerAdapter)
- android.support.v4.view.PagerAdapter
- Android PagerAdapter的用法
- PagerAdapter的几个方法
- 【PagerAdapter】Fragment的陷阱
- pagerAdapter的不同使用方法
- ViewPager的PagerAdapter.notifyDataSetChanged()
- PagerAdapter的使用方法
- PagerAdapter、FragmentPagerAdapter的使用
- pagerAdapter的简单介绍
- ViewPager+PagerAdapter的使用
- ViewPager的适配器PagerAdapter
- PagerAdapter闪屏坑的修复
- PagerAdapter
- PagerAdapter
- PagerAdapter
- Android 最新漏洞CVE-2015-3636
- JVM的相关知识整理和学习
- js时间
- Cocos中动作的初识
- iOS开发UI篇—在UItableview中实现加载更多功能
- 可复用View的PagerAdapter,RecyclePagerAdapter
- 杂项
- 详解super关键字
- 《Servlet与JSP核心编程第二版》阅读记录004-第二个与第三个servlet示例程序-补充
- Android使用Parcelable传递对象
- IOS 蓝牙
- HDU 1269(Tarjan模板)
- python错误:ImportError: No module named setuptools解决办法
- STL中栈与队列的使用