【发布时间】:2015-06-08 09:57:49
【问题描述】:
我正在尝试从稀疏布尔数组中的列表视图中获取所有选中的项目,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组。
我面临的问题是在调用函数之前,我检查了稀疏数组的大小,它显示了正确的大小,但是我将它传递给的函数,一旦它被调用,它就会显示大小为 0。我有不知道为什么会这样。
这就是我正在做的事情--->
SparseBooleanArray checkedPositions;
switch (item.getId()) {
case delete :
checkedPositions = listView.getCheckedItemPositions();
Log.d(TAG, checkedPositions.size());
confirmDeletion(checkedPositions);
break;
}
这是我传递给它的方法--->
confirmDeletion(final SparseBooleanArray checkedPositions) {
Log.d(TAG, checkedPositions.size());
}
对于第一个日志,我得到正确的大小,但在第二个日志中为 0。我不知道出了什么问题。任何帮助将不胜感激。
【问题讨论】:
-
您确定您正在阅读正确的日志吗?如果是这样,唯一的解释是并发修改。
-
是的,我对阅读正确的日志持肯定态度。但这不应该是因为当函数 confirmDeletion() 的逻辑在 switch-case 内部时,它运行得很顺利,但后来我决定把它分解,我遇到了这个问题。我有解决方法,但只是想知道为什么会发生这种情况。
-
调试它并找出发生了什么。
-
@AjeetKhadke 抱歉,这又是不正确的行为。当我调试它时,稀疏数组中有正确数量的键和值,但它的大小不知何故为 0,这真的很奇怪。没有大小,我无法遍历所有键。有什么想法吗??
-
1) 您看到的条目是否标记为已删除? 2) 可以从多个线程访问它吗? 3)如果这些想法都没有帮助,请将程序剥离为SSCCE。
标签: java android arrays sparse-array