2013-12-20 86 views
2

我正在下載很多圖像和文字(就像facebook的帖子)從服務器。我可以使用嵌套的線性佈局而不是列表視圖嗎?

所以當listview被滾動時,它會在創建循環視圖時閃爍。所以我想爲我的主線性佈局中的每個帖子使用多個線性佈局。

在這種情況下,會不會有滾動性能或內存消耗問題?請幫忙?

+1

爲什麼你不使用異步圖像下載機制? –

+0

請發佈您的代碼.... – dipali

+1

爲什麼不使用此答案中提到的自定義延遲加載庫? http://stackoverflow.com/a/8562313/1979347 –

回答

2

您不應該使用一堆LinearLayouts作爲ListView的替代品。

ListViews做一些叫做View Recycling的事情,這樣任何時候只有用戶可以看到的視圖數量纔會保存在內存中。其餘視圖在用戶向上/向下滾動時創建並放棄。例如,如果您的屏幕大小一次只能看到10行,則根據具體實現,任何時候只有10-15行ListView將存儲在內存中。

如果將您的ListView替換爲200 LinearLayouts,那麼您將在內存中保存200個ViewGroups。這可能會導致性能下降,或導致應用程序因OutOfMemoryError而崩潰。

有關ListView性能改進的更多提示,請參閱此great post by Lucas Rocha

+0

嘿Anup - **擱置* *性能因素。假設我們只討論**短名單**。所以,只有十個或二十個項目,比方說,想象一下可能是某種彈出式選擇器。所以,整個事情不到一個或兩個屏幕高度,我們會說。 **在這種情況下**我真的很好奇哪個「更好」 - 是否有任何缺點,只需填充一個LinearList,看點很少? Android專業人士的感受是什麼? – Fattie

+1

在這種情況下,我個人覺得最好只使用沒有ListView的常規視圖。 –

+0

@AnupCowkur:嗨,如果我沒有幾個子視圖不少於10,但每個視圖(項目)都有很多子視圖? – hguser

3

那麼肯定會有性能問題由於listview創建並放棄了不重點的列表項,比如只有在屏幕上的那些(比如10個)在內存中,在線性佈局中所有200將不得不保留在內存中,這是堆棧而不是堆棧的內存,因此如果應用程序保持運行,並且由於內存不足問題將導致FORCE CLOSE,它會使您的手機受到影響。

你也可以讓你的線性佈局放棄不重點的項目,但即使經過這麼多的努力,它將與列表視圖一樣,所以我不會建議這樣做,而是直接使用列表視圖

相關問題