我在向下滚动后尝试更新 ListView
时遇到问题:
public void onSwipeRight(ListView listView, int [] reverseSortedPositions) {
LoadFromDB task = new LoadFromDB();
String term;
View v;
int childIndex = reverseSortedPositions[0];
v = listView.getChildAt(reverseSortedPositions[0]);
tv = (TextView)v.findViewById(R.id.tv_ddItem);
}
在屏幕上滚动之前,我可以从右子项(行)获取正确的位置和正确的 textView。向下滚动后,我得到一个 NullPointerException
。
P.S reverseSortedPositions[0]
始终返回数组中的正确位置。
最佳答案
ListView 没有与数组一样多的 subview - 它会回收 View 。 如果您在屏幕上看到 5 个项目,则列表总共将有大约 10 个 View ,并且当您滚动时它们将被重复使用。基本上,一旦开始滚动,您就会失去数组索引和 ListView 的 subview 索引之间的关系。
Chet hasse 有一篇关于 ListView 上的滑动删除和删除动画的精彩文章。我建议您从这里开始,这几乎正是您所需要的(他还提供了可供下载的工作代码示例)。
关于java - Android listView右滑时子位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800375/