我在我的适配器类中使用布尔数组(扩展ArrayAdapter)来存储检查的checkox位置。当我在logcat中打印它时,每当我选中一个复选框时,它会打印[Z @ 42067480。这是什么意思?如何解码这个以获得特定检查位置的值?我是新手。 此外,还有其他替代方法可以存储自定义列表视图的已检查项目位置。
答案 0 :(得分:4)
我认为你将整个布尔数组打印为一个字符串,而不是我给你一个例子,你可以相应地改变它。我正在使用两种类型的for循环。你可以选择其中之一。
boolean []arr={true,false,true,true};
for(boolean boolean1:arr)
{
Log.e("",""+boolean1);
}
OR
for (int i = 0; i < arr.length; i++) {
Log.e("",""+arr[i]);
}
您可以将数据存储在arraylist中,在循环中迭代布尔数组,也可以创建另一个。这取决于你的选择。我已经使用了现有的for循环。如果想要,你可以创建新的。
ArrayList<Boolean> booleans=new ArrayList<Boolean>();
for (int i = 0; i < arr.length; i++) {
Log.e("",""+arr[i]);
booleans.add(arr[i]);
}
OR
for (boolean b:arr) {
Log.e("",""+b);
booleans.add(b);
}
如果您有任何疑问,请发表评论。
答案 1 :(得分:0)
您看到的是阵列的内存位置;你可能正在做myArray.toString()
这就是为什么你看到所有索引都是一样的东西。
至于存储复选框状态的最佳方式,您应该使用SparseArray。
答案 2 :(得分:0)
您必须打印复选框本身的值。打印checkbox.isChecked()。