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

    ViewHolder這么寫(只提供一個(gè)靜態(tài)方法,其實(shí)可以加一個(gè)私有構(gòu)造函數(shù)防止外部實(shí)例化),代碼很簡(jiǎn)單,看過就明白了
    [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]


            哈哈,完成了,果斷把這個(gè)ViewHolder類加入自己的utils,一勞永逸了以后~
            值得注意的是SparseArray這個(gè)知識(shí)點(diǎn),優(yōu)化過的存儲(chǔ)integer和object鍵值對(duì)的hashmap,網(wǎng)上資料很多這里就不廢話了~

    穩(wěn)定

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

    貼心

    項(xiàng)目群及時(shí)溝通

    專業(yè)

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

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽(yù)

    堅(jiān)持

    10年專注高端品質(zhì)開發(fā)
    • 返回頂部
    国产精品亚洲综合天堂夜夜| 亚洲精品**中文毛片| 日韩亚洲国产高清免费视频| 久久亚洲精品无码av| 国产91精品一区二区麻豆网站 | 久久精品视频大全| 久久狠狠一本精品综合网| 国产精品亚洲精品日韩电影| 日韩精品人成在线播放| 精品国产自在现线看| 久久水蜜桃亚洲AV无码精品| 国产主播精品在线| 色妞妞www精品视频| 99re热这里只有精品| 无码国产精品一区二区免费16| 精品久久久久久亚洲| 亚洲精品国产精品乱码在线观看| 国产午夜精品理论片免费观看 | 精品人妻一区二区三区浪潮在线| 99re在线这里只有精品| 久久久久成人精品| 久久精品中文字幕不卡一二区| 国产精品三级在线观看无码| 国内精品91最新在线观看| 国产亚洲精品精华液| 中文精品无码中文字幕无码专区| 伊人精品视频一区二区三区| 在线精品动漫一区二区无广告| 91精品国产91久久久久福利| 久久久99精品一区二区| 孩交VIDEOS精品乱子| 国自产精品手机在线观看视频| 中文字幕久热精品视频在线| 91国内外精品自在线播放| 中文字幕乱码中文乱码51精品| 亚洲精品蜜桃久久久久久| 亚洲国产精品一区二区成人片国内 | 亚洲精品美女在线观看| 91精品福利在线观看| 国产精品一久久香蕉国产线看| 久久这里都是精品|