首页 > 代码库 > ViewPager的Adapter中视图重用
ViewPager的Adapter中视图重用
ViewPager的PagerAdapter不像ListView/GridView的BaseAdapter,它是没有内部视图重用机制的,也就是说我先inflate出来一个,然后调用destroyItem后,这个视图就被抛弃了,如果需要更多的视图,则需要再次inflate。如果ViewPager中的所有视图基本相同,就存在内存的浪费了。这里使用一个非常简单的方法实现视图的重用:
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的问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。