【发布时间】:2015-01-07 14:35:57
【问题描述】:
我在我的适配器类(扩展 ArrayAdapter)中使用一个布尔数组来存储检查过的 checkox 位置。当我在 logcat 中打印它时,每次我选中一个复选框时它都会打印 [Z@42067480。这是什么意思?如何对此进行解码以获得特定检查位置的值?我是新来的。 此外,是否有任何其他替代方法来存储自定义列表视图的已检查项目位置。
【问题讨论】:
我在我的适配器类(扩展 ArrayAdapter)中使用一个布尔数组来存储检查过的 checkox 位置。当我在 logcat 中打印它时,每次我选中一个复选框时它都会打印 [Z@42067480。这是什么意思?如何对此进行解码以获得特定检查位置的值?我是新来的。 此外,是否有任何其他替代方法来存储自定义列表视图的已检查项目位置。
【问题讨论】:
我认为您将整个布尔数组打印为字符串,而不是我在下面只给您一个示例,您可以相应地更改它。我正在使用两种类型的 for 循环。你可以选择其中之一。
boolean []arr={true,false,true,true};
for(boolean boolean1:arr)
{
Log.e("",""+boolean1);
}
或
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]);
}
或
for (boolean b:arr) {
Log.e("",""+b);
booleans.add(b);
}
如有任何疑问,请发表评论。
【讨论】:
你看到的是数组的内存位置;你可能在做myArray.toString(),这就是为什么你看到所有索引都一样。
至于存储复选框状态的最佳方式,您可能应该使用SparseArray。
【讨论】:
您必须打印复选框本身的值。打印 checkbox.isChecked()。
【讨论】: