ViewHolder另外一種完法

每爲一個AdapterView寫Adapter適配器,你是否都會建立 一個static的ViewHolder類來負責臨時存儲ItemView?不用回答我也已經聽見了你的抱怨,那麼下面爲你們介紹另一種我常常使用的寫法,今後和無盡的ViewHolder說拜拜,並且不會影響頁面加載的性能。 數據結構

Android爲開發者提供了ListView和GridView這兩個經常使用於顯示列表的控件。在不使用ViewHolder的狀況下過程當中,列表子View數量很少的狀況下,可能不大看的出列表加載性能上的差別。可是相信在菜鳥階段的時候,每一位都親測過在上述狀況下,列表展現較多數據時加載是何等的坑爹,會出現滑動不順暢呀的現象。出現的緣由呢就是由於加載了過多的子View,每個子View都須要查找id呀,界面重繪呀等操做,這樣致使了內存開銷過大以及手機繪圖的效率跟不上,纔會出現前面咱們說的滑動較卡的現象。因此Android爲咱們開發者提供了標準的ViewHolder的寫法來重用列表的ItemView,來避免出現上述兩個問題。最標準的寫法,就是爲每個AdapterView的子View新建一個對應的ViewHolder,同時聲明爲prtivate final static。 性能

好了,背景介紹完畢,上代碼。 .net

上面兩張圖片展現了ViewHolder和它的使用。能夠看到這裏定義的ViewHolder代碼是十分的簡單,使用起來也是很是的輕便。並且這種代碼的寫法也徹底等價於谷歌官方推薦咱們使用的作法。看到這裏是否是很愜意呀! 圖片

SparseArray<View>在代碼理解上等價於HashMap<Interger, View>,SparseArray是Android提供的一個數據結構,旨在提升查詢的效率。因此View childView = viewHolder.get(id);這句代碼的時間上的開銷是極小的,徹底不會影響到執行的效率。 內存

相關文章
相關標籤/搜索