我正在开发一个数据收集应用程序。我有很多这样的问题和不同的答案选项。我可以为每个问题创建一个活动。但这将是一个非常低效的方法,因为我有50多个这样的问题。
我需要做些什么来动态生成和填充复选框?如果我只能指定复选框的数量,一个包含选项的String数组并在Java中动态生成复选框,那将会容易得多。
我是否需要CustomViews?
答案 0 :(得分:0)
有两种可能的方法:
答案 1 :(得分:0)
如果您知道需要多少个复选框,则可以始终以编程方式将它们添加到布局中。例如,如果您获得通过Intent传入的String数组选项,则可以执行以下操作:
String[] answers = ... // get from Intent extras
LinearLayout container = findViewById...
int numCheckboxes = answers.length;
for (int i = 0; i < numCheckboxes; i++) {
CheckBox checkbox = new CheckBox(this /*context*/);
checkbox.setText(answers[i]);
container.addView(checkbox);
}
您可能需要处理的更详细信息是知道检查了哪个复选框。您可以尝试这样的事情:
for (int i = 0; i < numCheckboxes; i++) {
...
checkbox.setTag(i);
checkbox.setOnCheckedChangedListener(checkedChangedListener);
...
}
...
boolean[] responses;
...
private OnCheckedChangedListener checkedChangedListener = new OnCheckedChangedListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Object tag = buttonView.getTag();
if (tag instanceOf Integer) {
Integer index = (Integer) tag;
responses[index] = isChecked;
}
}
};