Android - 如何自动创建视图?

时间:2014-03-06 03:40:52

标签: android android-custom-view

enter image description here

我正在开发一个数据收集应用程序。我有很多这样的问题和不同的答案选项。我可以为每个问题创建一个活动。但这将是一个非常低效的方法,因为我有50多个这样的问题。

我需要做些什么来动态生成和填充复选框?如果我只能指定复选框的数量,一个包含选项的String数组并在Java中动态生成复选框,那将会容易得多。

我是否需要CustomViews?

2 个答案:

答案 0 :(得分:0)

有两种可能的方法:

  1. 创建一个活动,其中包含一个数组数组,用于保存数据并在其上循环,为布局添加复选框。
  2. 为每个问题创建单独的布局,并将数据存储在与复选框关联的标签中。

答案 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;
        }
    }
};