我有ListView
个ArrayAdapter
来支持它。列表的更新通常涉及多个项目添加/删除操作,然后是排序操作。通常,更新只删除一个项目并添加几乎相同的项目,最终最终与我删除的项目位于同一位置。
如何防止列表视图在这些操作中“抽搐”?理想情况下,我想冻结所有重绘操作,然后添加,删除和排序项目,然后“解冻”UI,允许重绘。有什么方法可以达到这个目的吗?
答案 0 :(得分:1)
ArrayAdapter#setNotifyOnChange()
似乎是这个的候选人。使用方法如下:
myAdapter.setNotifyOnChange(false);
// add, remove and sort items here
myAdapter.notifyDataSetChanged();
确保更新代码中没有其他内容调用ArrayAdapter#notifyDataSetChanged()
(因为这样做会触发重绘),更新将被延迟,直到事务完成。
编辑:尝试此操作后,仍然会偶尔出现抽搐,但这也可能是因为我scroll所选列表视图项(后退)进入后视图每次更新。