2013-07-17 179 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