2012-10-20 51 views
0

我有一個ListView可以顯示一些內存密集的AnimationDrawable。在屏幕上可以看到其中的兩個以上,但構成列表的項目中可能會有幾十個。如何確定是否爲可見行調用ListAdapter

我的問題是我的ListAdapter似乎被調用列表中的每個項目。我認爲這是爲了讓ListView可以設置它的滾動高度。但這意味着我正在加載所有那些我不需要的AnimationDrawable(使用大量內存)。

有沒有辦法確定對ListAdapter的調用是否用於不可見的行?這將允許我跳過加載這些可能永遠不需要出現在屏幕上的昂貴對象。

+0

「我的問題是,我的ListAdapter似乎被調用列表中的每個項目」 - 它不應該。它應該在每個可見行最初被調用(並且*可能*另一行或兩行),然後安靜直到用戶滾動。 – CommonsWare

回答

0

ListViews循環使用行,所以在任何時候只有幾個不可見的行。這是適配器的getView方法的作用。它會創建一個視圖(如有必要),並設置當前項目的數據。因此,如果您的項目多於可見行,則傳遞給getView的視圖不會爲空,而應該更新而不是創建。

相關問題