我有自定义对象的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次(我想象一个主要的性能命中),或者它只执行最新的调用,在某种意义上只重绘他们一次?
我基本上想知道我是否可以使用第一种方法,还是会对性能产生重大影响?
由于
答案 0 :(得分:0)
当您调用notifyDataSetChanged()时,它不会立即重绘视图。 UI线程控制器可以知道何时重绘。虽然它出现瞬间。您应该尝试一下,看看是否存在性能问题。我们真的无法为你回答这个问题。如果仅在所有添加后更新列表视图是有意义的,那么就这样做。