如何在android中以编程方式获取已选中复选框的选定值?

时间:2016-01-04 00:53:43

标签: android checkbox android-view android-checkbox

我在android中以编程方式编写了git add,它是以编程方式编写的,因为CheckBox的值将基于在线内容,所以基本上,程序不知道有多少CheckBox CheckBox 1}}将要打印。我使用for循环来打印复选框,但它很成功,但在这些复选框中,我希望获得将被选中的CheckBox的值。
我怎么能这样做?

String ans = _jsonObject.optString("choices").toString();
String[] ansar = ans.split("`");
cb = new CheckBox[ansar.length];
for (int z = 0; z<ansar.length; z++){
    CheckBox cb = new CheckBox(survey);
    cb.setText(ansar[z]);
    choiceslayouts.addView(cb);
}

2 个答案:

答案 0 :(得分:1)

您需要创建一个布尔数组来保存所有复选框的状态 然后为每个setOnCheckedChangeListener

添加CheckBox
String ans = _jsonObject.optString("choices").toString();
String[] ansar = ans.split("`");
boolean[] array = new boolean[ansar.length];

for (int z = 0; z<ansar.length; z++){
       ...
       cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                array[z] = isCheck;
           }
       });
}


您可以为每个tag设置CheckBox以检查CheckBox的状态

1.为onClickListener

实施Activity
public YourActivity extends Activity implements View.OnClickListener

2.然后为每个CheckBox设置标签

for (int z = 0; z<ansar.length; z++){
    ...
    cb.setTag("tag"+z);   
    cb.setOnClickListener(this);
}

3.Finnaly,实施onClick

     public void onClick(View v) {
            switch (v.getTag()) {
                case "tag0":
                     if(((CheckBox) v).isChecked()) {
                          // your checkbox 0 is checked
                     }else{
                          // your checkbox 0 is not checked
                     }
                     break;
                case "tag1":
                     // do the same
                     break;
                ...
            }
        }

希望这个帮助

答案 1 :(得分:1)

我认为您应该使用ListViewRecyclerView自定义布局和自定义适配器,以优化性能。无论如何,如果不对代码进行重大更改,应该可以实现您所寻找的内容。 你的问题是在for循环中你重新创建了一个与前一个完全相同的新复选框,所以即使你把它添加到父视图中,你基本上反复添加相同的复选框,你可以&# 39;听#&#34;单身&#34;复选框。 你应该尝试这样的事情:

String ans = _jsonObject.optString("choices").toString();

String[] ansar = ans.split("`");
final boolean[] cbValue = new boolean[ansar.length];
cb = new CheckBox[ansar.length];
for (int z = 0; z<ansar.length; z++){
    cb[z] = new CheckBox(survey);
    cb[z].setText(ansar[z]);
    cb[z].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            cbValue[z] = !cbValue[z];
        }
    });
    choiceslayouts.addView(cb[z]);
}

cbValue[]应该包含复选框的值。

这没有错误检查,但它应该给你一个想法。