zoukankan      html  css  js  c++  java
  • ViewPager的Adapter中视图重用

    ViewPager的PagerAdapter不像ListView/GridView的BaseAdapter,它是没有内部视图重用机制的,也就是说我先inflate出来一个,然后调用destroyItem后,这个视图就被抛弃了,假设须要很多其它的视图,则须要再次inflate。假设ViewPager中的全部视图基本同样,就存在内存的浪费了。这里使用一个很easy的方法实现视图的重用:

    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);
            ........
    }

    事实上非常easy,就是定义一个List来回收View,当destroyItem的时候,把View增加到List中,当须要又一次inflate的时候,则先推断一下List中是否存在回收过的View,假设有的话,就重用。这就攻克了不断inflate视图,然后再destroy的问题。

  • 相关阅读:
    汉语-汉字:鬲
    汉语-汉字:鬻
    汉语-汉字:軎
    汉语-汉字:辔
    汉语-汉字:燮
    汉语-汉字:夔
    汉语-汉字:鬯、畅
    4-2电子时钟中的运算符重载
    华为OJ:计算字符个数
    POJ 3071 Football 【概率DP】
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3829556.html
Copyright © 2011-2022 走看看