2014-03-06 46 views
0

enter image description hereAndroid - 如何自动创建视图?

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

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

我是否需要CustomViews?

回答

0

有两种方法可能:

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

如果您知道需要多少个复选框,您可以随时将它们以编程方式添加到布局中。例如,如果你得到的通过意图传递选项的字符串数组,你可以这样做:

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