Android - 动态分配和检索ID

时间:2012-04-21 17:08:34

标签: android android-layout android-widget

我知道如何通过调用setID()来动态识别ID。为了使ID具有唯一性,我曾使用ids.xml并从预先生成的ID池中传递给setID() ID。

问题1:有没有办法在不使用ids.xml的情况下分配ID,因为我无法预测运行时需要多少ID?

我试图绕过问题1 中提出的第一个问题,通过动态分配每个基于其标签的哈希值的ID(每个标签都是唯一的),但是没有办法保证该ID是不会与R.java中生成的ID自动发生冲突。

问题1.1:如何解决ID命名冲突?

问题2:假设我拥有动态分配和生成的ID值。由于上述ID未显示在R.id中,findViewById()将不适用于检索视图。因此,当ID已知时,如何检索视图?

答案2:只有在onCreate()返回控件(已终止)后,您才能通过相应的ID检索视图。

2 个答案:

答案 0 :(得分:8)

从API级别17,您可以通过调用

获取新ID
View.generateViewId()

Details here.

答案 1 :(得分:1)

  

有没有办法在不使用ids.xml的情况下分配ID,因为我   无法预测我在运行时需要多少ID?

这可以保证每个视图都有唯一的ID

for(int i =0 ; i < yourIDcount ; i++){
yourView.setId(i);
}
  

如何在知道ID时检索视图?

View.findViewById(yourView.getId());

可用于获取您的视图ID,因为每个视图都有唯一ID,您可以返回您想要的视图。

动态词是指在运行时创建的,因为您在onCreate中指定了id,它被指定为视图ID,因为只有在创建活动时才调用onCreate,您可以确保您指定的ID保持不变。 ..