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 final 変数を作成せずにリスナーを実装できません

4

2 に答える 2

0

以下のようなものを使用してみてください。

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


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

後でこれをStringbytS.toString()メソッドに変換できます。

于 2012-08-02T09:05:49.630 に答える
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 に答える