在顺序更新期间冻结ListView

时间:2017-10-23 20:35:36

标签: android listview android-arrayadapter

我有ListViewArrayAdapter来支持它。列表的更新通常涉及多个项目添加/删除操作,然后是排序操作。通常,更新只删除一个项目并添加几乎相同的项目,最终最终与我删除的项目位于同一位置。

如何防止列表视图在这些操作中“抽搐”?理想情况下,我想冻结所有重绘操作,然后添加,删除和排序项目,然后“解冻”UI,允许重绘。有什么方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

ArrayAdapter#setNotifyOnChange()似乎是这个的候选人。使用方法如下:

myAdapter.setNotifyOnChange(false);
// add, remove and sort items here
myAdapter.notifyDataSetChanged();

确保更新代码中没有其他内容调用ArrayAdapter#notifyDataSetChanged()(因为这样做会触发重绘),更新将被延迟,直到事务完成。

编辑:尝试此操作后,仍然会偶尔出现抽搐,但这也可能是因为我scroll所选列表视图项(后退)进入后视图每次更新。