對Listview控制項的效率優化

2021-07-08 20:14:48 字數 1396 閱讀 9574



不管在android平台還是ios平台,listview或者是類似控制項,在資料顯示方面都佔據著相當重要的位置。而作為最重要的資料展示形式,listview控制項或者是類似的需要使用adapter的控制項的載入以及資料展示的效率和優化,就被擺在了乙個很重要的位置,本篇文章主要給大家介紹,如何可以實現listview控制項的效率優化。

我們都知道,listview的資料顯示,少不了adapter的設計,所以優化在重點都在如何設計adapter中。而baseadapter中負責返回布局view的方法,getview(),則是我們優化的重點物件。

在getview()方法中,我們需要將資料與顯示布局繫結在一起,每當listview顯示乙個item的時候,就會掉用這個方法產生對應的檢視,因此,這個方法會被呼叫多次。

最簡單的我們可以象下面這樣:

publicview getview(finalintposition, view convertview, viewgroup arg2)

return 

convertview;

}

這樣,就只有在contentview為空的時候,才進行布局的填充,從而大大的減少了載入xml布局檔案的記憶體消耗。

一般來說,我們在getview()裡面需要進行資料的繫結和事件的繫結,那麼我們就需要找到所用的控制項,也就是需要findviewbyid,但是如果在這個方法中,每次都findviewbyid這個方法,因為findviewbyid這個方法會在xml檔案中進行遍歷,從而找到我們需要的控制項,因此,會大大的加重手機的負擔,那麼我們有什麼辦法減少findviewbyid的使用次數呢?乙個比較好的方法就是建立乙個靜態類,**如下

static class viewholder
在這個類裡面定義好我們需要的控制項,然後在getview方法中這樣使用

public view getview(final int position, view convertview, viewgroup arg2)  else 

viewholder.tvtitle.settext(list.get(position).gettitle());

return convertview;

}

這樣,我們就可以大大的提高布局的載入效率了。

現在基本所有的應用都對listview資料進行了分頁的顯示,由於系統自帶的listview對資料的分頁顯示支援的不是很好,所以推薦大家使用xlistview等開源專案實現此功能,具體實現的過程就不在本篇文章論述了,如有需要,另開一篇文章介紹資料分頁載入的實現。

對Listview控制項的效率優化

convertview本身具有被重用的性質 static class viewholder 一般來說,我們在getview 裡面需要進行資料的繫結和事件的繫結,那麼我們就需要找到所用的控制項,也就是需要findviewbyid,但是如果在這個方法中,每次都findviewbyid這個方法,因為 fi...

如何提公升ListView的效率

listview的優化方案 首先,預設直接使用listview的效率是非常低的,在adapter的getview 方法中,每次都將布局載入了一遍,當它快速滾動的時候就會效能下降。1,在getview 的引數中還有乙個view 型別的convertview引數,它用於將之前載入好的布局進行快取,以便之...

簡單的LISTVIEW控制項實現

1.建立乙個empty activity 我用的是android studio3.1.2,起點太高現在已經感受到各種問題,哎,有苦自己吞了 res layout activity main.xmllinearlayout xmlns android xmlns tools android layou...