我在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);
}
答案 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)
我认为您应该使用ListView或RecyclerView自定义布局和自定义适配器,以优化性能。无论如何,如果不对代码进行重大更改,应该可以实现您所寻找的内容。 你的问题是在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[]
应该包含复选框的值。
这没有错误检查,但它应该给你一个想法。