2

java.lang.IllegalStateException: アダプターの内容が変更されましたが、ListView は通知を受け取りませんでした。アダプターのコンテンツがバックグラウンド スレッドからではなく、UI スレッドからのみ変更されていることを確認してください。

私のリストビューには巨大なデータが含まれています

リスト内のデータが変更されたときに、ハンドラーを使用して次のコードを呼び出しています

  listviewAdapter.notifyDataSetChanged();

しかし、ロードするたびにではなく、同じエラーが何度か発生します よろしくお願いします

4

3 に答える 3

2

問題は、アダプタがどこで更新されるかではなく、アダプタが更新される時間です。

次のように見えます: アダプタへのデータ バインドが変更され、UI が更新されたため、今回はシステムがデータの変更を検出しましたが、notifyDataSetChanged.

そのため、アダプターのデータを変更するときの提案、notifyDataSetChangedすぐに呼び出し、

また

スレッドでアダプターのデータを変更するよう指示しないでください。データを に送信し、データをhanlder使用handlerしてアダプターのデータを置換または変更する必要がありnotifyDataSetChangedます。

notifyDataSetChangedとにかく、データを取得してバックグラウンドスレッドで実行し、UIスレッドで使用されるデータを更新することをお勧めします。

于 2012-04-20T07:24:47.207 に答える
0

runOnUIThread() でアダプターの引数を変更するか、ハンドラーを使用して、データセットが変更されたことをアダプターに通知します。

于 2012-04-20T07:21:32.017 に答える
0

エラーは非常に明確です。listviewAdapter.notifyDataSetChanged();UI スレッドとは異なるスレッドから呼び出す必要はありません 。

于 2012-04-20T07:13:04.010 に答える