java - Android listView右滑时子位置错误

标签 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] 始终返回数组中的正确位置。

最佳答案

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

Chet hasse 有一篇关于 ListView 上的滑动删除和删除动画的精彩文章。我建议您从这里开始,这几乎正是您所需要的(他还提供了可供下载的工作代码示例)。

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

关于java - Android listView右滑时子位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800375/

相关文章:

android - 在自定义 ListView 中编辑文本在滚动时失去值(value)

Java - 为什么 char 在不应该的情况下隐式转换为字节(和短)原语?

java - String(byte[]) 是否创建字节数组的深拷贝?

java - 获取对象的嵌套数组,改造android

android - 有没有办法签署我的应用程序,这样用户就不必检查未知来源?

android - 如何让 RecyclerView 对齐到中心并能够滚动到所有项目,而中心是 "selected"?

java - 装饰一个 HashMap 添加随机性以防止 (DDoS

java - "The import [...] conflicts with a type defined in the same file"错误 [java]

java - 导致应用程序崩溃的未知错误

android - 使用 android-gradle 3 在 Android 库中公开支持库依赖项的正确方法是什么?