我在 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 列中创建 EditText,ID 名称为 task1。
再次单击该按钮时,将创建另一个 EditText,位于第 4 行、第 1 列,id 名称为 task2。
再次单击该按钮时,将创建另一个 EditText,位于第 5 行、第 1 列,id 名称为 task3。
等等.....
Android 中的 ID 不是字符串 - 它们始终是数字。即使你用xml编写@+id/textId
,为此文本生成一个数字。你可以在你的R
file.
您可以做的是将 id 分配给您的编辑文本,方法是使用editText.setId(int)
方法。如果您希望能够轻松引用编辑文本,您可以:
按顺序分配 id:1,然后 2,3 等。然后该项目的 id 将是(row-1) * <columnsCount> + column)
(因此,如果您有 3 列,则第五行中的第二项的 id 将为 4 * 3 + 2)
创建一个类型的地图字段Map<String, Integer>
,再次按顺序分配id,并将它们保存在.
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
editText.setId(i);
idsMap.put(tname, i);
然后你可以通过调用来获取edittext的ididsMap.get("task3")
第三种选择是只参考您的EditText
在地图中:然后你就会有一个Map<String, EditText>
地图,然后调用
String tname = "task" + Integer.toString(i);
EditText editText = new EditText(this);
editTextsMap.put(tname, editText);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)