ViewHolder模式簡潔寫法

2022-05-01 17:06:11 字數 1442 閱讀 4369

參考**:

在安卓中 自定義adapter時,使用viewholder可快取每個item的view,減少一些不必要的操作,提高效能。在網上看到一種比較簡潔的寫法,避免每個自定義的adapter定義

viewholder實體類。

importandroid.util.sparsearray;

importandroid.view.view;

/*** 

* @類名 viewholderutils

* @功能描述 資料來源 adapter 中 優化 控制項 獲取 輔助類

* @作者 2014-5-19 / 郝志東

* @備註

《對應的分析文件、設計文件或其他備註說明》

* @修改記錄

*     r1:

*         修改理由:

*/publicclassviewholderutils 

/*** 

* @功能 從快取中 獲取 view 控制項 物件,如果不存在快取就初始化後放入快取,以備下次使用;

*  知識點: android應用效能優化之使用sparsearray替代hashmap;

* @param view 當前item 布局 view

* @param id 當前item中 某個view 的id值

* @return  當前item中對應id的view物件

* @作者 2014-5-19 / 郝志東

*/public

static

extends view> t get(view view, int id) 

view childview = viewhodler.get(id);

if (childview == null) 

return

(t) childview;}}

在自定義的

adapter中

getview函式中呼叫方式如下:

@override

public view getview(int position, view convertview, viewgroup parent) 

convertview = layoutinflater.from(mcontext).inflate(

r.layout.item_listview_healtheducation, parent, false);

}// 從 緩衝 中 獲取 textview 物件

textview titleview = viewholderutils.get(convertview,

r.id.tv_item_healtheducation);

conductcontentitem item = getitem(position);

if (item != null) 

return convertview;

}來自為知筆記(wiz)

使用ViewHolder模式優化ListView

1 通過viewholder可以減少物件的建立,降低資源的消耗。2 使用快取中的covertview。3 settag 中的tag不是用來標識特定的view,而是儲存和view相關的額外資訊。public classnotifyadapterextendsbaseadapter override p...

python 中if else的多種簡潔的寫法

因寫多了判斷語句,看著短短的 卻佔據來好幾行,於是便搜下if else簡潔的寫法,結果也是發現新大陸 4種 第1種 就是普通寫法 a,b,c 1,2,3 if a b c a else c b 例子2 a,b 1,2 if a b max a else max b print max max 第二種...

Vue雙向繫結原理(我盡量寫的。簡潔)

先問自己兩個問題 使用object.defineproperty 監聽物件屬性的改變 2.當資料發生改變後,vue是如何知道 通知哪些 人 介面發生重新整理呢 張三,李四,王五 發布訂閱者模式 張三 李四 王五 這裡假設他們分別對應這三個message vue 第一步肯定是建立vue例項。注意這裡的...