• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>

            ViewHolder是什么就不解釋了。
            大家通常怎么寫ViewHolder呢?
    [mw_shl_code=java,true]        ViewHolder holder = null;
            if(convertView == null){
                    convertView = mInflater.inflate(R.layout.xxx null);
                    holder = new ViewHolder(); 
                    holder.tvXXX = (TextView)findViewById(R.id.xxx);
                    //...一連串的findViewById
            }
            else{
                    holder = (ViewHolder) convertView.getTag();  
            }
            
            
            
            private static class ViewHolder{
                    TextView tvXXX;
                    //很多view的定義
            }[/mw_shl_code]


          這么寫一次還行,但問題是總有很多很多的ViewAdapter要這么寫,每次都repeat,repeat,repeat  累啊。      所以,有這么一種簡潔的寫法分享給大家,先聲明,從國外網站上看的,不是自己原創的,但確實很喜歡這個簡潔的設計。

    ViewHolder這么寫(只提供一個靜態方法,其實可以加一個私有構造函數防止外部實例化),代碼很簡單,看過就明白了
    [mw_shl_code=java,true]public class ViewHolder {
        // I added a generic return type to reduce the casting noise in client code
        @SuppressWarnings("unchecked")
        public static <T extends View> T get(View view, int id) {
            SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
            if (viewHolder == null) {
                viewHolder = new SparseArray<View>();
                view.setTag(viewHolder);
            }
            View childView = viewHolder.get(id);
            if (childView == null) {
                childView = view.findViewById(id);
                viewHolder.put(id, childView);
            }
            return (T) childView;
        }
    }[/mw_shl_code]


    在getView里這樣
    [mw_shl_code=java,true]@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = LayoutInflater.from(context)
              .inflate(R.layout.banana_phone, parent, false);
        }

        ImageView bananaView = ViewHolder.get(convertView, R.id.banana);
        TextView phoneView = ViewHolder.get(convertView, R.id.phone);

        BananaPhone bananaPhone = getItem(position);
        phoneView.setText(bananaPhone.getPhone());
        bananaView.setImageResource(bananaPhone.getBanana());

        return convertView;
    }[/mw_shl_code]


            哈哈,完成了,果斷把這個ViewHolder類加入自己的utils,一勞永逸了以后~
            值得注意的是SparseArray這個知識點,優化過的存儲integer和object鍵值對的hashmap,網上資料很多這里就不廢話了~

    穩定

    產品高可用性高并發

    貼心

    項目群及時溝通

    專業

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發
    • 返回頂部
    无码人妻精品中文字幕免费| 精品无码国产污污污免费网站国产 | 香蕉久久精品国产| 99久热re在线精品视频| 久久精品一区二区| 99久久精品费精品国产一区二区| 国产va免费精品| 日韩在线观看完整版电影| 午夜亚洲国产精品福利| 日本精品久久久久护士| 国产精品福利自产拍在线观看| 久久久久久极精品久久久| 国产高清在线精品一本大道| 无码人妻精品一区二区蜜桃百度| 在线观看日韩精品| 日韩人妻无码一区二区三区久久99 | 亚洲精品福利网站| heyzo高无码国产精品| 日韩国产有码在线观看视频| 亚洲国产欧美日韩精品一区二区三区| 国产亚洲精品国产福利在线观看| 国产精品午夜爆乳美女| 国产精品无码一二区免费| 精品国产柚木在线观看| 精品一区二区久久久久久久网精| 精品人妻无码一区二区色欲产成人 | 精品无码黑人又粗又大又长| 久久久精品国产免大香伊| 精品一区二区三区在线观看| 午夜在线视频91精品| 精品一区二区三区无码视频| 拍国产乱人伦偷精品视频| 日韩午夜高清福利片在线观看 | 99这里只有精品| 日韩精品久久久肉伦网站| 国产精品福利区一区二区三区四区| 国产成人综合日韩精品婷婷九月| 日韩中文无码有码免费视频| 精品香蕉伊思人在线观看| 国产精品粉嫩美女在线观看| 久久丝袜精品中文字幕|