• <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ā)
    • 返回頂部
    国产成人精品福利网站在线观看| 国产精品特黄毛片| 青青青青久久精品国产h| 国产精品麻豆入口| 日韩免费a级在线观看| 亚洲日韩国产成网在线观看| 国内精品福利在线视频| 日本精品视频一视频高清| 2020国产精品永久在线观看| 一区二区三区日韩精品| 久久精品国产亚洲AV果冻传媒| 亚洲欧洲精品无码AV| 国语自产精品视频在线观看| 国产精品人人做人人爽| 亚洲AⅤ永久无码精品AA| 日韩免费高清视频| 日韩欧美中文字幕公布| 日韩精品少妇无码受不了| 日韩精品一区二区午夜成人版| 国产精品国产三级国产在线观看| 精品国产AV无码一区二区三区| 国产乱码精品一区二区三区麻豆| 久久亚洲精品国产精品婷婷| 精品不卡一区二区| 国产精品99久久久久久人| 精品无码国产自产在线观看水浒传| 91大神在线精品网址| 99re6这里只有精品| 99re热这里只有精品18| 久久精品毛片免费观看| 97精品在线观看| 精品国产一区二区三区无码| 国产精品国产三级国产专播| 国产精品揄拍一区二区久久| 99视频精品国在线视频艾草 | 亚洲精品无码专区2| 日批日出水久久亚洲精品tv| 四虎永久在线精品国产馆V视影院| 香蕉在线精品视频在线观看6| 日韩精品一区二区三区不卡| 日韩精品在线视频|