ListView的最佳化

來源:互聯網
上載者:User

標籤:

1. ListView須要設定adapter,它的item是通過adapter的方法getView(int position, View convertView, ViewGroup parent)獲得的。

2. ListView中僅僅有第一屏的item須要建立,它的引用會被存在RecycleBin對象內,在拖動時後面的item實際上是重從了之前建立的item。3. 依據上述,ListView在須要顯示item時,最開始第一屏時,getView(int position, View convertView, ViewGroup parent )的第二個參數為null,顯示第二屏或者復原顯示第一屏時,getView(int position, View convertView, ViewGroup parent )第二個參數是一個原來緩衝的item,我們僅僅須要在getView中把它內部資料更新就可以。4. 假設item結構比較複雜,在更新一個已有的item內部資料的時候,尋找item內部每個元素也須要佔用不少資源,所以,能夠把這些內部元素的引用緩衝起來,直接對其賦值,最有效方法是把這些引用存到相應的item中,比較好的方法是使用setTag()方法。
據上四條,可得出:1. 在adapter的getView(int position, View convertView, ViewGroup parent)方法中,每次都new一個新的View返回,是效能最差的,浪費了ListView巧妙設計的一片苦心。2. 假設item內部元素簡單,getView中假設傳進來的view不為空白,直接為其賦值就可以。3. 假設item內部元素複雜,能夠使用Google IO 大會中討論的方法最佳化(例如以下):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.icon1 = (ImageView) convertView.findViewById(R.id.icon1);
            holder.text1 = (TextView) convertView.findViewById(R.id.text1);
            convertView.setTag(holder);
    }
    else{
            holder = (ViewHolder)convertView.getTag();
    }
        holder.icon1.setImageResource(R.drawable.icon);
        holder.text1.setText(mData[position]);
        return holder;
}static class ViewHolder {
        TextView text1;
        ImageView icon1;
}
參考:http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html

ListView的最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.