ListView 中Adapter的優化

2021-06-25 22:53:33 字數 1165 閱讀 6893

listview的adapter的作用如下圖所示:

adapter的作用就是listview介面與資料之間的橋梁,當列表裡的每一項顯示到頁面時,都會呼叫adapter的getview方法返回乙個view。想過沒有? 在我們的列表有1000000項時會是什麼樣的?是不是會占用極大的系統資源?

先看看下面的**:

public

view getview(

int position, view convertview, viewgroup parent)

怎麼樣?如果超過1000000項時,後果不堪設想!您可千萬別這麼寫!

我們再來看看下面的**:

public

view getview(

int position, view convertview, viewgroup parent)

((textview) convertview.findviewbyid

(r.id.text

)).settext

(data[position]);

((imageview) convertview.findviewbyid

(r.id.icon

)).setimagebitmap

((position &1)

==1? micon1 : micon2)

;return convertview;

}

怎麼樣,上面的**是不是好了很多?系統將會減少建立很多view。效能得到了很大的提公升。

還有沒有優化的方法呢? 答案是肯定的:

public

view getview(

int position, view convertview, viewgroup parent)

else

holder.text.settext

(data[position]);

holder.icon.setimagebitmap

((position &1)

==1? micon1 : micon2)

;return convertview;

}static

class viewholder

怎麼樣?會不會又給您的系統帶來很大的提公升呢?看看下面三種方式的效能對比圖您就知道了!

ListView 更高效的使用 Adapter

一 adapter adapter是listview和資料來源之間的中間人。當每條資料進入可見區時,adapter會呼叫他的getview 方法,並返回代表具體資料的檢視。滾動的時候頻繁呼叫,支援成千上萬的資料。最簡單的方法,最慢最不實用 public void getview int positi...

在ListView中巢狀ListView的事件處理

前天在工作中遇到在listview中的item需要用listview來展現處理後的內容,然後就遇到了乙個很頭疼的問題,作為item的listview沒法進行滑動,而且顯示也不正常,只是顯示幾個子item。不能將子item全部顯示,原因是在控制項繪製出來之前要對listview的大小進行計算,要解決將...

ListView中巢狀RadioButton按鈕

listview中巢狀radiobutton按鈕中導致單選按鈕可以多選,所以為了解決這個問題,我看網上都出現好多方法。試了好多,也不行,自己思考,豐衣足食。核心 final int index position holder.radio.setonclicklistener new onclickl...