2011-08-29 4 views
0

私は、たくさんのカスタムビューといくつかのカスタムListAdapterを含んだかなり気の利いたMergeAdapterを持っています。このMergeAdapterはListActivityを駆動し、x秒ごとに取得されるコンテンツを表示します。MergeAdapterの内容を更新する

現在のところ、新しいMergeAdapterを作成し、自分のカスタムビューを作成して追加します(これにはいくつかのImageViewが含まれています)。 - 自分のアクティビティのListViewでsetAdapterを呼び出します。

約10分の更新後、私はヒープスペースがなくなり、クラッシュします。新しいImageViewのが追加され、次の例外がスローされているので

最終的には:(ArrayAdapterのような)シンプルなアダプタで

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

を、私は、データセットを更新し、

notifyDataSetChanged() 
を呼ぶだろうアダプターの

MergeAdapterを「更新」するための類似の/推奨の方法はありますか?または、私は潜在的に複雑なMergeAdapterの内容を歩き、個々のビューを更新する必要がありますか?

答えて

0

MergeAdapterを「更新」するための類似の/推奨の方法はありますか?

notifyDataSetChanged() works、AFAIK。現在のMergeAdapterには、の変更を登録したものに、ListAdaptersの変更をリップルさせるコードが含まれています。これはおそらく十分にテストされていないので、そうでないことを示すサンプルアプリケーションがある場合は、そのリンクを投稿するか、私に送信してください(このSOの質問に言及してください)。

+0

私は単一のリストビューにカスタムカーソルアダプターを使用しています.2つのカーソルアダプターを1つの単一のリストビューにマージしようとしています。結果が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を更新します。しかし、ビューを更新するための回避策はありますか?助けてください。 –

関連する問題