2011-08-29 72 views
0

我有一個非常漂亮的MergeAdapter,它包含一堆自定義視圖和一些自定義ListAdapter。此MergeAdapter驅動ListActivity,顯示每x秒更新一次的內容。更新MergeAdapter的內容

目前我只需要創建一個新的MergeAdapter,創建並添加所有的我自定義視圖(這包括一些ImageViews) - 和調用setAdapter在我活動的ListView。

約10分鐘後,我用完的堆空間和崩潰更新後。

最終因爲一個新的ImageView的加入,和下面的異常被拋出:

Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

用更簡單的適配器(如ArrayAdapter),我只想更新數據集,並調用

notifyDataSetChanged() 

在適配器上。

是否有「更新」一MergeAdapter類似的/推薦的方法呢?或者我應該走一個潛在複雜的MergeAdapter的內容並更新單個視圖?

回答

0

是否有「更新」一MergeAdapter類似的/推薦的方法呢?

notifyDataSetChanged()作品,AFAIK。當前MergeAdapter的代碼可以將其中的ListAdapters的任何更改漣漪化爲任何已註冊MergeAdapter更改的用戶。這可能還沒有經過足夠的測試,所以如果你有一個示例應用程序,否則發佈一個鏈接或發送給我(提到這個問題)。

+0

我使用自定義光標適配器爲我的單個列表視圖。我嘗試將兩個遊標適配器合併成一個單一的列表視圖。我想刷新listview結果來自server.But mergeAdapter不刷新。 。 –

+0

FeedQuestionCursor = ctx.getContentResolver()的查詢( \t \t \t \t \t FeedQuestionProvider.FEED_QUESTION_URI,NULL,NULL,NULL, \t \t \t \t \t NULL); \t \t \t QuestionAdapter.changeCursor(FeedQuestionCursor); \t \t \t QuestionAdapter =新FeedQuestionCursorAdapter(getActivity(), \t \t \t \t \t FeedQuestionCursor); \t \t \t lv_earn_question.invalidate(); \t \t \t // QuestionAdapter.notifyDataSetChanged(); \t \t \t((BaseAdapter)QuestionAdapter).notifyDataSetChanged(); –

+0

@CommonsWare:我使用MergeAdapter來合併不同的視圖和SimpleCursorAdapters。正如你所說notifyDataSetChanged更新任何ListAdapter。但有沒有解決方法來更新視圖?請幫忙。 –