码迷,mamicode.com
首页 > 其他好文 > 详细

ViewPager的Adapter中视图重用

时间:2014-06-27 23:43:37      阅读:444      评论:0      收藏:0      [点我收藏+]

标签:des   blog   java   使用   2014   os   

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的问题。

ViewPager的Adapter中视图重用,布布扣,bubuko.com

ViewPager的Adapter中视图重用

标签:des   blog   java   使用   2014   os   

原文地址:http://blog.csdn.net/buleriver/article/details/35225081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!