Android ListView多布局講解

2021-09-20 16:30:59 字數 1904 閱讀 2471

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; i 

這種寫法詬病很大,嚴重影響效能,此外如果商品數量有個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 }

50                     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 }

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...