我试图从Sparse布尔数组中的列表视图中获取所有选中的项,并将该数组传递给一个函数,该函数向用户显示一个对话框,单击"是"时,会在数据库中为Sparse数组中的选定项做一些事情。
我面临的问题是,在调用函数之前,我会检查稀疏数组的大小,它会显示正确的大小,但我传递给的函数,一旦被调用,它就会显示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。我不知道出了什么问题。任何帮助都将不胜感激。
由于没有SSCCE,我可以猜测您的流不是您所想的那样。将堆栈跟踪添加到日志记录中,以便查看调用confirmDelation()方法的人员和时间。
另一个建议是确保您使用相同的对象。将toString添加到日志记录中,可以查看流的顺序以及是否使用了相同的对象。毕竟,同一个对象确实返回了相同的结果,所以看起来肯定有一些差距,并且您使用的是不同的对象。