1

ListViewのArrayAdapterの基礎となるデータであるカスタムオブジェクトのArrayListがあります。

このデータは、Webから一連の新しいアイテムをフェッチするなど、バッチで変更される場合があります。データがバッチで変更される場合、ArrayListへのadd()ごとにnotifyDataSetChanged()が呼び出される必要があります

いくつかの単純化されたコード:

for(Object object : newObjects){
   list.add(object);
   adapter.notifyDataSetChanged();
}

または、バッチ内のすべてのアイテムが追加された後に一度呼び出す必要がありますか?

for(Object object : newObjects){
    list.add(object);
}
adapter.notifyDataSetChanged()

50個の新しいオブジェクトのバッチがあるとします。最初の例のように、50回のnotifyDataSetChanged()呼び出しが次々に行われる場合、ビューは50回続けて再描画されますか(パフォーマンスが大幅に低下すると思います)、それとも最新の呼び出しのみを実行し、ある意味では再描画のみを実行しますか?それらを一度?

基本的に、最初の方法を使用できるかどうか、またはパフォーマンスに大きな影響を与えるかどうか疑問に思っています。

ありがとう

4

1 に答える 1

0

notifyDataSetChanged()を呼び出しても、ビューはすぐには再描画されません。再描画するタイミングを知るのは、UIスレッドコントローラー次第です。それは瞬時に見えますが。試してみて、パフォーマンスの問題があるかどうかを確認する必要があります。私たちは本当にあなたのためにそれに答えることはできません。すべての追加後にのみリストビューを更新することが理にかなっている場合は、それを実行します。

于 2010-10-26T07:55:19.130 に答える