2012-11-26 56 views
14

我有一個自定義列表,它需要幾分鐘時間才能顯示。當我試圖檢查問題出在哪裏時,我發現即使在列表中只有一個項目時,方法getCount()被調用5次,getVIew()被調用一次,然後getCount()被調用更多的時間。 整體getCount()被調用7次。這有道理嗎?爲什麼適配器中的getCount被多次調用?

謝謝!

+0

PLease提供代碼示例! –

+0

顯示代碼。我相當懷疑getCount()讓你的列表抓取 –

+0

你滾動嗎?提供更多的數據 – GamDroid

回答

9

您可以看到hereAdapter.getCount()方法的不同內部調用。

但是您必須記住,您無法控制如何調用此方法。

它可以被多次調用,這就是爲什麼你必須儘可能快地保持它。

+0

對不起,但我沒有理解「保持儘可能快」的部分 - 這種方法只返回數組的大小嗎? – user1787773

+1

當然。但是你可以隨意重寫它。這個想法是確保你不要在它裏面做任何代價高昂的計算,因爲它很可能會在UI線程中被調用很多次。 – fiddler

+0

我沒有覆蓋它。我所做的只是返回數組大小。所以我想這意味着需要listView出現的時間與被多次調用的getCount()沒有任何關係? – user1787773

2

getCount()被稱爲太多的時間,因爲App-USER可以隨時update its list和多數民衆(可以在其存儲數據添加)爲什麼我們返回,(storage).size()(元素的總數)。

1

適配器getCount()方法將在以下情況下調用。

1)將適配器設置爲列表視圖/網格視圖。

2)當我們在Adapter上調用notifyDataSetChanged時。

所以,檢查你的代碼,你可能會做上述情況更多的時間或遞歸..

0

你應該有一個搜索按鈕進行搜索時,更新的適配器。該方法被稱爲多次繪製視圖,如果在該方法中您有一個setAdapter,那麼將會多次調用getCount,並且最終將返回0,並且您查看的內容不會被填充。

相關問題