我有一個自定義列表視圖(包含兩個圖像和5個文本視圖),其中我必須顯示200多個數據,當我第一次將所有數據加載時它會返回的內存異常,解決我想要的,當我們向下滾動列表視圖直到列表的最後一個項目,然後它的應用程序再次增加更多的數據到同一個列表的問題。它一直運行,直到我們獲得了列表視圖中的所有數據。請不要告訴我使用EndlessAdapter,因爲Endlessadapter總是每10秒後下載一次。它也會在一段時間後返回內存溢出。當我們向下滾動時在ListView中添加更多項目
在此先感謝。
我有一個自定義列表視圖(包含兩個圖像和5個文本視圖),其中我必須顯示200多個數據,當我第一次將所有數據加載時它會返回的內存異常,解決我想要的,當我們向下滾動列表視圖直到列表的最後一個項目,然後它的應用程序再次增加更多的數據到同一個列表的問題。它一直運行,直到我們獲得了列表視圖中的所有數據。請不要告訴我使用EndlessAdapter,因爲Endlessadapter總是每10秒後下載一次。它也會在一段時間後返回內存溢出。當我們向下滾動時在ListView中添加更多項目
在此先感謝。
分配列表http://developer.android.com/reference/java/util/List.html您addapter,那麼你可以調用item.add和item.remove
約出來的內存,也沒有辦法,5 imageViews和5個textViews會導致內存不足。你可能將所有的200張圖像保存在一起,而不是使用某種緩存(如softreference和LruCache)。整個適配器的要點是要顯示大量的項目(當然不是同時)使用最少的內存。你可以看到,即使在Play商店(我還是喜歡叫的Android市場)的應用程序使用,如果你玩不夠用滾動的內存緩存......
有關列表視圖的更多信息,請觀看this
您可能還想要閱讀更多關於處理圖像here。
反正可以採取getView作爲觸發(使用相比getCount將()值的位置參數)時加載多個項目,然後更新使用notifyDatasetChanged適配器(和更新getCount將()值)。
我建議每次用戶滾動時檢查ListView的第一個元素的位置。
ListView.getFirstVisiblePosition()
如果是接近你的列表中的元素,你可以將項目添加到列表的底部,然後從列表的頂部去除那些量。
我做了這樣的事情,當用戶向下滾動一次ExpandableListView時,加載更多的元素。
myListView.setOnScrollListener(new OnScrollListener()
{
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
int lastVisibleElement = firstVisibleItem + visibleItemCount;
if(lastVisibleElement == totalItemCount)
{
//Load elements
myListAdapter.notifyDataSetChanged();
}
}
「請不要告訴我用EndlessAdapter因爲Endlessadapter總是每次10秒後下載的項目」 - 不,它不是。 **您的代碼**「總是每10秒後下載一次」。 'EndlessAdapter'中沒有任何*代碼,「每10秒鐘」。我解釋了你的問題通常在你的最後一個問題的答案中的位置:http://stackoverflow.com/a/11023432/115145 – CommonsWare
好吧,我同意你的看法,但告訴我代碼中的問題在哪裏?以及如何解決? –
我回答說已經在我的回答(http://stackoverflow.com/a/11023432/115145)到你的其他問題(http://stackoverflow.com/questions/11022562/endless-adapter-always-running-to -download數據功能於背景)。 – CommonsWare