2011-08-17 72 views
2

我有一個複選框,用於在數組中單擊時保存該複選框的索引。我正在嘗試添加功能,以便在複選框未選中時從數組中刪除該值。取消數組值

下面是將複選框值保存到數組的循環,然後在腳本中稍後將選定數組與另一個標記數組進行比較。所以如果用戶點擊複選框,然後取消點擊它,值仍然是真實的。

      CheckBox[] setOfCheckBoxes = new CheckBox[] 
              { 
             (CheckBox) findViewById(R.id.checkBox1), 
             (CheckBox) findViewById(R.id.checkBox2),  
             (CheckBox) findViewById(R.id.checkBox3), 
             (CheckBox) findViewById(R.id.checkBox4), 
             }; 
      for (int i = 0; i < setOfCheckBoxes.length; i++) { 

       final int index = i; 
        setOfCheckBoxes[i].setOnClickListener(new View.OnClickListener(){  
         public void onClick(View v) {  
         selected[index] = ((CheckBox) v).isChecked(); 
         } 
        }); 
       } 

我應該在同一個循環中執行unChecked嗎?

+0

這將是更好的/清楚,如果你添加選定[i] = setOfCheckBoxes [I] .isChecked();在for循環中。 –

回答

2

你已經在做它。

selected[index] = ((CheckBox) v).isChecked(); 

如果複選框被選中,你selected[index]true否則將false

我假設您已將selected[]初始化爲new boolean[setOfCheckBoxes.length]並將它們全部設置爲false。

+0

但我認爲,如果他們檢查它,然後取消選中它,索引仍處於選中狀態。 – Denoteone

+0

你是正確的選擇是一個boolen,但設置爲標籤數組的長度,我後來比較兩個。 – Denoteone

+0

點擊偵聽器應該觸發它是否檢查它,所以我會假設選定的[索引]應該在真與假之間切換。 – Kal

1

糾正我,如果我錯了。您還可以得到複選框的狀態:

for (int i = 0; i < setOfCheckBoxes.length; i++) { 
    selected[i] = setOfCheckBoxes[i].isChecked(); 
} 
+0

@Denoteone,我建議您在創建URL的最終事件中進行上述操作,而不是設置onClicklisteners。更直接的實現將直接用於你的目的比放入數組然後使用它。 – Ronnie