2013-10-14 33 views
0

我仍然試圖找到在我的列表視圖中獲得更好性能的方法。我在Google I/O 2009視頻中看到的一件事是使用ViewHolder的性能。Android ViewHolder是或不是?

http://www.youtube.com/watch?v=N6YdwzAvwOA

正如你可以在12:00分的使用viewHolder巨大他人的性能差異看。我正在做「愚蠢」的方式,這意味着不實施viewHolder功能。

所以,我試了一下。

如果沒有viewHolder,我會在3秒內在我的listview中加載20個項目(其中包含一個小圖像,標題,描述和價格(ImageView,TextView,TextView,TextView))。

我成功實現了方法viewHolder具有相同的對象和...我也正好3秒加載列表視圖中的20個項目。

我期待這次減少至少一半。

你們認爲什麼?這是正常的嗎?

+0

測試超過100個項目,並檢查是否有任何區別。 – Raghunandan

+1

對於20個項目,3秒聽起來像是你花大部分時間做的事情不是findViewById(),而且對於這樣一個小數據集的視圖持有者模式的好處並未顯示在測量中。 – laalto

+0

你是如何填充列表視圖,你使用異步任務? –

回答

2

ViewHolder在第一次加載時不會提高加載速度,它會提高滾動速度。即使使用ViewHolder,您也必須在某些場合使用findViewById方法。因爲如果您重新使用視圖並僅編輯其內容,它只會提高性能。 圖片/文字和東西。

是的,這是正常的,它不會加快你的通脹/負荷速度。爲了改善加載,你將不得不使用不同的技術:)

你如何爲你的視圖提供數據?滾動時,你在UIThread上做某種「繁重的工作」嗎?

+0

謝謝,並看看我上面的答案。 – user2742861

+0

我認爲這應該回答你的問題:) –

相關問題