ViewPager的Adapter中视图重用
2014-06-27 10:05
246 查看
ViewPager的PagerAdapter不像ListView/GridView的BaseAdapter,它是没有内部视图重用机制的,也就是说我先inflate出来一个,然后调用destroyItem后,这个视图就被抛弃了,如果需要更多的视图,则需要再次inflate。如果ViewPager中的所有视图基本相同,就存在内存的浪费了。这里使用一个非常简单的方法实现视图的重用:
其实很简单,就是定义一个List来回收View,当destroyItem的时候,把View加入到List中,当需要重新inflate的时候,则先判断一下List中是否存在回收过的View,如果有的话,就重用。这就解决了不断inflate视图,然后再destroy的问题。
List<View> mViewList = new ArrayList<View>(); public Object instantiateItem(View container, int position) { View view = null; if (mViewList.isEmpty) { inflate a new View } else { view = mViewList.remove(0); } ........ } public void destroyItem(View container, int position, Object object) { View view = (View)object; ((ViewPager) container).removeView(view); mViewList.add(view); ........ }
其实很简单,就是定义一个List来回收View,当destroyItem的时候,把View加入到List中,当需要重新inflate的时候,则先判断一下List中是否存在回收过的View,如果有的话,就重用。这就解决了不断inflate视图,然后再destroy的问题。
相关文章推荐
- ViewPager的Adapter中视图重用
- ViewPager PagerAdapter不更新视图
- ViewPager视图滑动工具+FragmentPagerAdapter
- ViewPager的pageradapter加载视图的机制
- 视图模式:Android ViewPager & WP Pivot
- ViewPager可滑动页面+点击标题栏切换视图
- ViewPager的PagerAdapter不可以更新数据
- Android中的ViewPager和 PagerAdapter的初步理解和使用
- ViewPager+FragmentStatePagerAdapter 实现菜单
- GEF放在ViewPart中demo(adapter添加属性视图)
- Android基础--ViewPager的PagerAdapter的介绍
- FragmentPagerAdapter+ViewPager实现Tab切换效果
- ViewPager的setOffScreenPagerLimit()和FragmentStatePagerAdapter及FragmentPagerAdapter的区别与联系
- SlidingMenu条目点击无响应、Android输入框过多视图改变和ViewPager页面点击切换自然
- ViewPager内使用FragmentPagerAdapter时滑动出现illegalstateexception解决办法
- ViewPager + FragmentPagerAdapter 最佳实践
- View(视图)——ListView之ArrayAdapter和SimpleAdapter文集
- 禁用滚动视图ListView、ViewPager、ScrollView、HorizontalScrollView、WebView边界颜色渐变
- ViewPager之PagerAdapter
- viewpager fragment FragmentStatePagerAdapter数据删除后更新界面