gpt4 book ai didi

android - 如何在 Android 中以编程方式在 EditText 中设置 Id

转载 作者:行者123 更新时间:2023-11-29 17:31:22 28 4
gpt4 key购买 nike

我在 GridLayout 上有一个名为 addnewTask 的按钮。当您创建此按钮时,它会创建一个 EditText。

private GridLayout gridLayout;

int rowIndex = 3;
int colIndex = 1;

int i=0;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_task);

gridLayout = (GridLayout) findViewById(R.id.taskLayout);

}

此函数在单击按钮时创建 EditText -->

public void addView(View view) {
i++;
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = ViewGroup.LayoutParams.WRAP_CONTENT;
param.width = GridLayout.LayoutParams.MATCH_PARENT;
param.rowSpec = GridLayout.spec(rowIndex);
param.columnSpec = GridLayout.spec(colIndex);
editText.setLayoutParams(param);
if (rowIndex > 3) {
editText.setTag(tname);
}

gridLayout.addView(editText);
rowIndex++;
}

我的问题是我想设置我创建的 EditText 的 android:id。

像这样:单击按钮时,在第 3 行第 1 列和 ID 名称 task1 中创建 EditText。

当按钮再次被点击时,另一个 EditText 被创建,在第 4 行,第 1 列和 id 名称 task2。

当按钮再次被点击时,另一个 EditText 被创建,在第 5 行,第 1 列和 id 名称 task3。

ANS 等等......

最佳答案

Android 中的 ID 不是字符串——它们始终是数字。即使你用xml写@+id/textId , 为该文本生成一个数字。您可以在 R 中看到文件。

您可以做的是使用 editText.setId(int) 为您的编辑文本分配 ID。方法。如果您希望能够轻松地引用编辑文本,您可以:

  1. 按顺序分配 ID:1,然后是 2、3 等。然后项目的 ID 将为 (row-1) * <columnsCount> + column) (因此,如果您有 3 列,则第五行中的第二项的 ID 为 4 * 3 + 2)

  2. 创建类型为 Map<String, Integer> 的 map 字段, 再次依次赋值id,存入。

String tname = "task" + Integer.toString(i);   
EditText editText = new EditText(this);
editText.setId(i);
idsMap.put(tname, i);

然后您可以通过调用 idsMap.get("task3") 来获取 edittext 的 ID

第三个选项是只保留对您的 EditText 的引用在 map 中:然后你会有一个 Map<String, EditText>映射,然后调用

String tname = "task" + Integer.toString(i);   
EditText editText = new EditText(this);
editTextsMap.put(tname, editText);

关于android - 如何在 Android 中以编程方式在 EditText 中设置 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com