0

我是 Android 3.1 及以上应用程序的开发人员。

我是一个动态表单生成器的开发人员,我需要以编程方式添加很多复选框。

表格将是第一列带有问题的表格,其他列将带有复选框。

这是一段代码,我在其中添加了复选框:

int optionsTotalNum = this.calculateColumsForBlock(block);
            QuestionsGroup qGroup = block.getQuestionsGroup();
            for(int z = 0; z < qGroup.getQuestions().size(); z++)
            {
                tableRow = new TableRow(this);
                Question q = qGroup.getQuestions().get(new Integer(z));
                params = new LayoutParams(this.optionWidth, this.rowHeight);
                params.column = 0;

                TextView optionName = new TextView(this);
                optionName.setText(q.getQuestionText().toUpperCase());
                optionName.setGravity(Gravity.CENTER);
                optionName.setLayoutParams(params);
                tableRow.addView(optionName);

                for (int index = 1; i < optionsTotalNum; i++)
                {
                    params.column = index;
                    CheckBox check = new CheckBox(this);

                    int id = ((z + 1) * 100) + index;
                    check.setId(id);
                    check.setLayoutParams(params);
                    tableRow.addView(check);
                }
                table.addView(tableRow, new TableLayout.LayoutParams(
                        LayoutParams.FILL_PARENT,
                        this.rowHeight));
            }

我使用int id = ((z + 1) * 100) + index;动态创建 ID,但我不确定我是否会重复和 Id。换句话说,我不确定我是否会有两个具有相同 ID 的视图。我知道所有复选框都有不同的 ID,但我会有TextViews, 和 aTableLayout并且TableRows我不知道它们是否可以有一个用于 a 的 ID CheckBox

findViewById()如果有两个具有相同 ID 的视图会发生什么?
我们可以在同一个 ContentView 上有两个或多个具有相同 ID 的视图吗?
有没有更好的方法来唯一地识别所有复选框?

4

2 回答 2

1

好吧,因为您是在运行时添加它..您不必设置一个ID..您可以将它们全部保存在一些维护插入顺序并直接访问它们的集合中......如果您想继续相同的想法。 . 然后不要在这里做任何复杂的事情.. 只需在类级别保留一个静态计数器.. 将其设置为 id 然后递增它...

于 2012-04-24T11:03:02.787 回答
0

如果您想拥有唯一的 id,只需使用 int id = (int) java.util.Date().getTime() 此函数将以毫秒为单位返回当前日期和时间,并且始终是唯一的。将此 id 保存在数组(或另一个容器)中以供进一步参考。

于 2012-04-24T11:55:01.820 回答