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); ........ }
ViewPager的Adapter中视图重用,布布扣,bubuko.com
原文地址:http://blog.csdn.net/buleriver/article/details/35225081