notifyDataSetChanged()性能问题以及何时/如何调用与一批数据更改相关的问题

时间:2010-10-26 04:27:41

标签: android listview android-arrayadapter

我有自定义对象的ArrayList,它是ListView的ArrayAdapter的基础数据。

有时会批量修改此数据,例如从网络中提取一组新项目。当批量修改数据时,应该在每次add()到ArrayList后调用notifyDataSetChanged()

一些简化的代码:

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

或者是否应该在添加批次中的所有项目后调用一次?

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

假设有一批50个新对象。如果50个notifyDataSetChanged()调用是一个接一个地进行,就像在第一个例子中一样,那么视图会连续重绘50次(我想象一个主要的性能命中),或者它只执行最新的调用,在某种意义上只重绘他们一次?

我基本上想知道我是否可以使用第一种方法,还是会对性能产生重大影响?

由于

1 个答案:

答案 0 :(得分:0)

当您调用notifyDataSetChanged()时,它不会立即重绘视图。 UI线程控制器可以知道何时重绘。虽然它出现瞬间。您应该尝试一下,看看是否存在性能问题。我们真的无法为你回答这个问题。如果仅在所有添加后更新列表视图是有意义的,那么就这样做。