我正在實施使用自定義適配器的ListView
。如果convertView
爲空,爲了提高性能,我將返回新充值的View
,否則返回回收的View
。View的setTag方法有什麼用處?
現在,在此過程中,我使用了ViewHolder模式,並使用了View
的setTag()
方法。最初我認爲這是某種書籤,但我還沒有完全理解它的使用。我已經檢查了他們在代碼中使用它的不同博客帖子。
有人可以請我解釋一下setTag()
方法的用法嗎?
我正在實施使用自定義適配器的ListView
。如果convertView
爲空,爲了提高性能,我將返回新充值的View
,否則返回回收的View
。View的setTag方法有什麼用處?
現在,在此過程中,我使用了ViewHolder模式,並使用了View
的setTag()
方法。最初我認爲這是某種書籤,但我還沒有完全理解它的使用。我已經檢查了他們在代碼中使用它的不同博客帖子。
有人可以請我解釋一下setTag()
方法的用法嗎?
基本上你可以存儲任何類型的對象作爲標記(當調用getTag
時將其返回)。這可以是一個簡單的ID或一些複雜的數據。這是你與這個觀點相關的一些信息。
對於列表和視圖持有者模式,它是一個簡單對象,其中包含對已標記視圖(組)的視圖的引用。因此,您每次更新視圖的內容時都不必撥打findViewById
。這只是性能優化。
我們可以在視圖標籤中存儲列表項的數據嗎?
不可以。由於視圖回收,您有(例如)10個視圖可以重複用於1000個列表項目。在標籤中存儲數據在這裏沒有意義。最好使用自定義數據對象來存儲列表項狀態(可能是包含顯示數據的同一個數組),或者在列表項更改時立即保存它。參見setTag documentation。
感謝您的回答。所以我知道我們可以存儲對象。是否我們可以存儲對象的狀態,例如listview的複選框選中狀態? – droidsites
我更新了我的答案。 – Knickedi