动态设置视图的ID

时间:2017-01-17 09:48:50

标签: android android-layout android-view

我必须动态创建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);

提前谢谢。

4 个答案:

答案 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