2011-08-29 73 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。但有没有解决方法来更新视图?请帮忙。 –