向右滑动时,Android listView错误的子位置

时间:2014-05-22 07:28:35

标签: java android

我在向下滚动时尝试更新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]始终返回数组中的正确位置。

1 个答案:

答案 0 :(得分:1)

ListView没有与数组一样多的子视图 - 它会回收视图。 如果您在屏幕上看到5个项目,则列表总共将有大约10个视图,并且在您滚动时将重复使用它们。基本上,一旦开始滚动,就会失去数组索引与ListView的子视图索引之间的关系。

Chet hasse在ListViews上有关于滑动到删除和删除动画的精彩内容。我建议你从那里开始,它几乎就是你需要的东西(他还提供下载的工作代码示例)。

https://www.youtube.com/watch?v=YCHNAi9kJI4