<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0

    ListView的Adapter的作用如下圖所示:

    Adapter的作用就是ListView界面與數(shù)據(jù)之間的橋梁,當列表里的每一項顯示到頁面時,都會調(diào)用Adapter的getView方法返回一個View。想過沒有? 在我們的列表有1000000項時會是什么樣的?是不是會占用極大的系統(tǒng)資源?

    先看看下面的代碼:

    public View getView(int position, View convertView, ViewGroup parent) {
    View item = mInflater.inflate(R.layout.list_item_icon_text, null);
    ((TextView) item.findViewById(R.id.text)).setText(DATA[position]);
    ((ImageView) item.findViewById(R.id.icon)).setImageBitmap(
    (position & 1) == 1 ? mIcon1 : mIcon2);
    return item;
    }

    怎么樣?如果超過1000000項時,后果不堪設(shè)想!您可千萬別這么寫!

    我們再來看看下面的代碼:

    public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
    convertView = mInflater.inflate(R.layout.item, null);
    }
    ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
    ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
    (position & 1) == 1 ? mIcon1 : mIcon2);
    return convertView;
    }

    怎么樣,上面的代碼是不是好了很多?系統(tǒng)將會減少創(chuàng)建很多View。性能得到了很大的提升。

    還有沒有優(yōu)化的方法呢? 答案是肯定的:

    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
    convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
    holder = new ViewHolder();
    holder.text = (TextView) convertView.findViewById(R.id.text);
    holder.icon = (ImageView) convertView.findViewById(R.id.icon);
    convertView.setTag(holder);
    } else {
    holder = (ViewHolder) convertView.getTag();
    }
    holder.text.setText(DATA[position]);
    holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
    return convertView;
    }
     
    static class ViewHolder {
    TextView text;
    ImageView icon;
    }

    怎么樣?會不會又給您的系統(tǒng)帶來很大的提升呢?看看下面三種方式的性能對比圖您就知道了!

    本文是Google I/O 2009 Romain Guy 所講的內(nèi)容,這里只做簡單介紹,相信一看代碼就能看懂!有問題請留言!

    posted on 2010-08-17 17:13 MEYE 閱讀(2918) 評論(1)  編輯  收藏

    FeedBack:
    # re: Android開發(fā)之ListView 適配器(Adapter)優(yōu)化
    2010-11-25 13:39 | 李聰
    您好,我剛接觸Android沒多久,前幾天面試也被問到這個問題,今天看到您這些東西很受用,謝謝,不過有個問題就是這個getView()方法寫在哪里呢  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲国产精品日韩av不卡在线 | 亚洲高清一区二区三区| 国产亚洲女在线线精品| 亚洲sm另类一区二区三区| 国产精品久久亚洲不卡动漫| 在线a人片天堂免费观看高清| 国产精品成人观看视频免费 | 日韩一级片免费观看| 免费国产黄网站在线观看动图 | 亚洲av无码电影网| 亚洲日韩国产精品乱| 国产偷窥女洗浴在线观看亚洲 | 免费精品国产自产拍在| 在线看片免费不卡人成视频| 成年性羞羞视频免费观看无限| 日韩成人在线免费视频| 免费a级毛片永久免费| 国产成人福利免费视频| 噼里啪啦免费观看高清动漫4| 97无码免费人妻超级碰碰碰碰| 成人免费视频88| 免费一看一级毛片| 国产亚洲精品福利在线无卡一 | 国产精品无码免费视频二三区 | 久久久久免费看黄A片APP| 暖暖免费高清日本一区二区三区| 国产男女猛烈无遮挡免费视频网站 | 亚洲日本va一区二区三区 | 亚洲理论片在线中文字幕| 国产精品久久亚洲不卡动漫| 看全免费的一级毛片| 三年在线观看免费观看完整版中文| 嫩草影院在线播放www免费观看 | 一级毛片不卡免费看老司机| 国产精品网站在线观看免费传媒| 国产国产人免费视频成69堂| 在线观看永久免费视频网站| 亚洲热妇无码AV在线播放| 亚洲成人免费电影| 免费无码专区毛片高潮喷水| 国内精品久久久久影院免费|