我正在开发一个数据收集应用程序。我有很多这样的问题和不同的答案选项。我可以为每个问题创建一个活动。但是,这将是一个非常低效的方法,因为我有超过50个这样的问题。
我需要做些什么来动态生成和填充复选框?如果我可以指定复选框的数量,一个持有选项的String数组并在Java中动态生成复选框,那将会容易得多。
我是否需要CustomViews?
我正在开发一个数据收集应用程序。我有很多这样的问题和不同的答案选项。我可以为每个问题创建一个活动。但是,这将是一个非常低效的方法,因为我有超过50个这样的问题。
我需要做些什么来动态生成和填充复选框?如果我可以指定复选框的数量,一个持有选项的String数组并在Java中动态生成复选框,那将会容易得多。
我是否需要CustomViews?
有两种方法可能:
如果您知道需要多少个复选框,您可以随时将它们以编程方式添加到布局中。例如,如果你得到的通过意图传递选项的字符串数组,你可以这样做:
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;
}
}
};