2012-08-02 64 views
0
String s; 
    CheckBox cb[]= new CheckBox[n]; 
    for(int i=0;i<n;i++) { 
     // CheckBox 
     String label = a[i]; 
     cb[i]=new CheckBox(this); 
     cb[i].setText(label); 
     cb[i].setTextColor(Color.parseColor("#006400")); 
     cb[i].setId(i); 
    } 

    if(cb[i].isChecked()) { 
     s+=i+","; 
    } 

在循環本身 但以s 的價值沒有改變使用這種嘗試的ID未做SA最後一個變量無法實現監聽如何檢索選中的複選框中的Android

+0

你的代碼是不完整的,嚴重縮進。你可以更新它來減輕我們的閱讀? – mithrop 2012-08-02 09:00:45

+0

我不覺得整個代碼塊只需要給出那些重要的代碼 – user1526585 2012-08-03 06:57:02

回答

0

嘗試使用類似下面。

StringBuilder s = new StringBuilder(); 
    --- 
     ---- 
    ---- 


if(cb[i].isChecked()) 
    { 
     s.append(i+","); 
    } 

稍後,您可以將其轉換爲字符串byt S.toString()方法;

+0

那麼它的幾乎與我的代碼所做的工作相同,我無法理解的是什麼時候使用isChecked()它只是在創建循環後才起作用按鈕? – user1526585 2012-08-03 06:48:54

0

您可以使用清單,並宣佈你的onCreate方法之外的字符串:

private String s; 

public void onCreate... { 
    final List<Integer> map = new ArrayList<Integer>(); 
    CheckBox[] ch = ...; 
    for(int i=0;i<ch.length;i++) { 
    ch[i].setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked) { 
       map.add(buttonView.getId()); 
      } else { 
       map.remove(buttonView.getId()); 
      } 
      s = ""; 
      for (Integer i : map) { 
       s += i+","; 
      } 
     } 
    }); 
} 
+0

我也試過這種方法,唯一的問題是,從這我可以得到按鈕本身的ID或參數。但是我想要做的是獲得id,然後在字符串中追加名稱[id],其中name是一個字符串數組,我不能聲明final。 IDE給我錯誤,非最終變量不能訪問........ – user1526585 2012-08-03 06:54:30

+0

檢查編輯的解決方案 – cosmincalistru 2012-08-03 08:32:11

相關問題