2013-07-17 125 views
0

在我的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]); 
      } 

我想知道这是否是有效或不和背后的原因。

错误: 类型不匹配:不能从复选框转换为复选框[]

复选框不能得到解决或无法在现场

+0

现在你所得到的错误是因为你正在试图给一个应该包含一个CheckBox数组的引用指定一个CheckBox变量。即“复选框C”而不是“复选框C []”。 –

+0

您是否尝试过使用ArrayList而不是数组? –

+0

@mmnumbp我不明白,对不起。那我该怎么做呢?我的意思是你的建议在这种情况下不会产生效果。 – Skynet

回答

1

好,这里是工作版本

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 <136;我++){ \t \t \t复选框[I] = I; \t \t} ** – Skynet

2

我不熟悉你的XML布局,但你可能穿上”那里需要136个复选框。相反,你应该使用ListView。看看这个例子here

您得到的错误是因为该赋值语法无效。你需要事先声明你的数组。实际分配值时,不需要再次指定类。例如:

CheckBox[] checkBoxes = new CheckBox[136]; 
... 
checkBoxes[i] = //Whatever you want to assign this. 
+0

我会用一个列表视图,但是在我的场景中这是不可行的,但是我得到你的逻辑和我实现相同,但是我仍然得到一个错误。这与我在我的问题中分类的相同。 – Skynet

+0

你收到哪个错误?假设你实现了上面所示的内容,你不应该再次遇到'TypeMismatch'错误。 – ggmathur

+0

我得到的CheckBox无法解析或不是***(R.id。checkbox [i])*** – Skynet