3

我正在尝试从稀疏布尔数组中的列表视图中获取所有选中的项目,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项目做一些事情。

我面临的问题是在调用函数之前,我检查了稀疏数组的大小,它显示了正确的大小,但是我传递给它的函数,一旦它被调用,它就会显示大小为 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。我不知道出了什么问题。任何帮助将非常感激。

4

1 回答 1

1

由于没有SSCCE,我可以猜测您的流程不是您想的那样。将堆栈跟踪添加到日志记录中,以便您可以查看谁以及何时调用了 confirmDeletion() 方法。

另一个建议是确保您使用相同的对象。为日志添加 toString 以查看流的顺序并使用相同的对象。毕竟同一个对象确实返回相同的结果,所以看起来肯定存在一些差距,并且您使用的是不同的对象。

于 2015-05-10T14:32:17.130 回答