• <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  累啊。      所以,有這么一種簡潔的寫法分享給大家,先聲明,從國外網(wǎng)站上看的,不是自己原創(chuàng)的,但確實很喜歡這個簡潔的設(shè)計。

    ViewHolder這么寫(只提供一個靜態(tài)方法,其實可以加一個私有構(gòu)造函數(shù)防止外部實例化),代碼很簡單,看過就明白了
    [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這個知識點,優(yōu)化過的存儲integer和object鍵值對的hashmap,網(wǎng)上資料很多這里就不廢話了~

    穩(wěn)定

    產(chǎn)品高可用性高并發(fā)

    貼心

    項目群及時溝通

    專業(yè)

    產(chǎn)品經(jīng)理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質(zhì)開發(fā)
    • 返回頂部
    亚洲精品成人网站在线播放| 久久国产乱子精品免费女| 久久久精品人妻久久影视| 91精品国产免费入口| 国产精品毛片无遮挡| 中文国产成人精品久久96| 精品视频免费在线| 国产三级精品在线观看| 性感美女视频在线观看免费精品| 国产精品专区第二| 精品无码人妻一区二区三区品 | 91亚洲精品视频| 久久亚洲精品国产精品黑人| 中文成人无字幕乱码精品区| 久久久99精品成人片中文字幕| 一本精品99久久精品77| 日韩av人人夜夜澡人人爽| 日韩无码系列综合区| 国产精品久久久久影院| 精品熟女碰碰人人a久久| 精品久久久无码人妻中文字幕豆芽| 国产精品一二三区| 91精品免费国产高清在线| 91精品久久久久久无码| 91精品国产91久久久久久最新| 日本伊人精品一区二区三区| 亚洲AV成人精品网站在线播放| 囯产精品一品二区三区| 国产精品白浆在线观看免费| 久久久久国产精品| 久久精品国产69国产精品亚洲| 国产精品午睡沙发系列| 亚洲精品美女久久久久99| 日韩精品无码一区二区三区AV | 91精品视频播放| 久久精品无码专区免费东京热 | 毛片亚洲AV无码精品国产午夜| 99国产精品欧美一区二区三区| 国产精品99久久99久久久动漫| 国产精品视频一区国模私拍| 性感美女视频在线观看免费精品|