listview優化是乙個老生常談的事情了,其優化的方面也有很多種,例如,布局重用、在getview()中減少邏輯計算、減少在頁面滑動的時候加在,而是在頁面停止滾動的時候再加在。而今天要介紹的是另一種方式,那就是多布局。
一般使用的場景有一下兩種情況:
① 當乙個item有多重布局的情況下,使用部分隱藏來實現既笨拙又效率低下,這時多布局會是個不錯的選擇;
② 當乙個item很複雜,頁面內容多,item高度很高,甚至超過手機螢幕,這個時候就需要使用多布局將頁面拆分成多個小item來提高執行效率。
舉個栗子:如下銷售訂單列表,我們發現乙個單個item的頁面高度很高,內容也很多,中部的商品個數還具有不確定性,這時的實現的方式我們可以看下:
**如下:
1 @override 2 public view getview(final int position, view convertview, viewgroup rootview) else 12 13 for (int i = 0; i50 viewholderfoot = new viewholderfoot();51 convertview = minflater.inflate(r.layout.item_list_order_foot, rootview, false);52 // ...初始化布局53 convertview.settag(r.layout.item_list_order_foot, viewholderfoot);54 break;55 }56 } else 68 }69 switch(type)80 return convertview;81 }82 83 private class viewholderhead 86 private class viewholdergoods 89 private class viewholderfoot 92 93 // ...94 }這種寫法詬病很大,嚴重影響效能,此外如果商品數量有個10個8個的會導致item過高,此外在getview()中for迴圈new布局物件是是否消耗記憶體的和執行時間的。
那麼,我們用多布局拆分下:
這種布局方式就叫listview的多布局。採用將乙個大的 item 切割成多個小item以降低布局的複雜度,提高重用率。那麼直接看這種方式的實現方式:
1 public class orderlistactivity extends activity 27 28 // 底部29 hashmaphashmapfoot = new hashmap<>();30 hashmapfoot.put("address", jsobj.optstring("address")); // 位址31 // ... 32 hashmaphead.put("item_type", orderlistadapter.ni_order_item_foot);33 arrlistgoods.add(hashmapfoot);34 }35 } catch (jsonexception e) 38 return arrlistgoods;39 }40 }
Android ListView優化總結
用多了listview之流 今天小朋友問這個問題時一時還無法回答全面 特此總結。listview多用於顯示具有相同格式之資料,包含的資料型別也極為豐富,聲音 文字等等。流程為,listview找到使用的介面卡,介面卡在逐個例項化,例項化後顯示,資料處理和adapter處理比較關鍵。就資料來說文字倒是...
Android ListView重新整理 載入
網上有現成的框架,pulltorefresh。不過專案裡不可能全部用到,顯得有些臃腫,在此用了xlistview,大同小異。無非就是重寫了listview中的ontouch方法,新增兩個控制項兒 headerview和footerview,新增乙個介面 重新整理和載入。這樣清晰了思路,再整理 就簡單...
Android ListView 問題彙總
listview 問題彙總 1.item 中的check view 選中混亂 listview 快取機制導致的。解決方案可以是 在adapter裡的getview方法裡先呼叫holder.cbiamge.setoncheckedchangelistener方法,再呼叫holder.cbiamge.s...