在for循环中初始化视图
问题描述:
在我的XML中,我有136个复选框,我不想在相应的java文件中单独初始化它们中的每一个,我想出了一个新的想法使用for循环,但android不会让我这样做。我尝试了onCreate方法中的代码。我需要声明全局吗?我不知道这可能是一个愚蠢的问题!在for循环中初始化视图
以下是我的代码:
CheckBox[] C = new CheckBox[136];
for(int i=1;i<=136;i++){
C[i] = (CheckBox) findViewById(R.id.checkBox[i]);
}
我想知道这是否是有效或不和背后的原因。
错误: 类型不匹配:不能从复选框转换为复选框[]
复选框不能得到解决或无法在现场
答
好,这里是工作版本
CheckBox[] C = new CheckBox[136];
// see thepoosh comment, you need to change to this:
for (int i = 0; i < 136; i++) {
C[i] = (CheckBox) findViewById(checkBox[i]);
}
我不知道为什么你得到类型不匹配。但是R.java
中不会有任何数组。
+0
只是一个小编辑:** int [] checkBox = new int [136]; \t \t对(INT I = 0; I Skynet
答
我不熟悉你的XML布局,但你可能穿上”那里需要136个复选框。相反,你应该使用ListView
。看看这个例子here。
您得到的错误是因为该赋值语法无效。你需要事先声明你的数组。实际分配值时,不需要再次指定类。例如:
CheckBox[] checkBoxes = new CheckBox[136];
...
checkBoxes[i] = //Whatever you want to assign this.
现在你所得到的错误是因为你正在试图给一个应该包含一个CheckBox数组的引用指定一个CheckBox变量。即“复选框C”而不是“复选框C []”。 –
您是否尝试过使用ArrayList而不是数组? –
@mmnumbp我不明白,对不起。那我该怎么做呢?我的意思是你的建议在这种情况下不会产生效果。 – Skynet