我必须动态创建4个按钮,我必须动态生成他们的ID,例如:
for(int i = 1; i <= 4; i++){
Button button = new Button(activity);
// i need something here to turn this string into an int;
button.setId("button" + i)
}
我知道如何动态获取现有视图的ID:
getResources().getIdentifier("button2", "button", getPackageName())
我不知道的是,如何动态生成id。
我在互联网上看了,但我没有找到任何东西。
我需要类似的东西:
int id = getResources().setIdentifier("button2", "button", getPackageName());
button.setid(id);
提前谢谢。
答案 0 :(得分:6)
更好的做法是使用API 17中引入的button.setId(View.generateViewId())
。
答案 1 :(得分:3)
您可以使用View.setId(int)
来实现此目的。根据文档id
,不需要在树层次结构中是唯一的,您可以对以编程方式添加的Views
使用任何(正)整数。
Doc说
标识符在此视图的层次结构中不必是唯一的。标识符应为正数。
如果您想要使用View
附加其他信息,可以使用setTag()
标记要查看的对象,并按findViewWithTag("obj");
查看
在此处详细了解如何创建ID https://stackoverflow.com/a/13241629/5235032
答案 2 :(得分:2)
1,在values文件夹中创建一个xml,
2,<resources>
<item type="id" name="button1">123</item>
</resources>
3,在java代码button.setId(R.id.button1);
答案 3 :(得分:0)
有同样的问题,仅适用于ImageView。
由于我没有找到答案,所以每个人基本上都说了
“不可能”或“使用xml”,我创建了自己的hashMap。
https://stackoverflow.com/a/53321713/10295425