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 的值没有变化无法实现侦听器而不使 sa 最终变量

4

2 回答 2

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+",";
            }
        }
    });
}
于 2012-08-02T09:13:22.920 回答
0

尝试使用类似下面的东西。

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


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

稍后您可以将其转换为 String 字节S.toString()方法;

于 2012-08-02T09:05:49.630 回答