Android SwipeToDismiss ListView会弄乱项目
我使用这个SwipeToDismissListener来关闭列表视图中的项目 解雇工作正常,也返回正确的解雇位置,但后来事情开始变得奇怪 在onDismiss中,我从适配器中删除该项:Android SwipeToDismiss ListView会弄乱项目,android,listview,Android,Listview,我使用这个SwipeToDismissListener来关闭列表视图中的项目 解雇工作正常,也返回正确的解雇位置,但后来事情开始变得奇怪 在onDismiss中,我从适配器中删除该项: public void onDismiss(ListView listView, int[] reverseSortedPositions) { for (int i: reverseSortedPositions) { Item item
public void onDismiss(ListView listView, int[] reverseSortedPositions) {
for (int i: reverseSortedPositions) {
Item item = adapter.getItem(i);
adapter.remove(item);
}
}
现在重新绘制列表视图时,项目开始看起来像列表中的其他项目(因此项目A显示项目B的文本),但是如果我实现onClickListener并检查它实际上是什么项目,它就是正确的项目,因此它显然是一个图形问题
我可以通过调用适配器来修复此错误外观。在一个项目上单击两次notifydatasetchanged。。。。
它不适用于适配器。如果我只调用它一次,或者如果我调用它延迟但自动
有人知道这里发生了什么吗
另外,我注意到,如果只需要进行一次重画,我的适配器.getView会为每个项目调用多次,我不知道这是否正常。我自己解决了这个问题。
这只是ArrayAdapter中视图回收的一个糟糕实现。
所以,作为提示,若在运行时从列表中删除元素,请确保在getView中很好地实现视图循环