我想问一下关于整个ID系统如何在android中工作的很多问题。我查阅了View文档,但对我的口味来说,描述太浅了。关于查看ID的问题一堆
有没有一种模式,IDE(Eclipse的/ Netbeans的),当我使用
android:id="@+id/..."
如何生成的ID ?或者它是完全随机的?如果我以编程方式设置ids,那么它是否会被上下文 类
findViewById()
函数找到?如果对前一个问题的答案是肯定的,那么如果我想 创造了大量的意见,但我希望他们能有后来识别不同的IDS ,然后至极一个是更好地使用? (回答 这个问题,这将是非常有用的知道了 前两个答案)
例如生成在尽可能大的范围内随机IDS:
Random random = new Random(); for(int i=0; i<100; i++) { View view = new View(someContext); view.setId(random.nextInt(Integer.MAX_VALUE)); }
或在某些设定的ID排序顺序,例如:
final int addToId = 5670; for(int i=0; i<100; i++) { View view = new View(someContext); view.setId(i+addToId); }
- 此外,我想知道,会发生什么,当你使用一个 LayoutInflater例如填充使用一个列表中每个项目的预定义xml布局。然后你可以通过
findViewById()
得到getView()
函数中的 子视图。所以我 假设,你列表中的所有相同的视图有 相同的ID。如果是这样,那么使用tag
属性来区分膨胀布局中的项目是否是一种好习惯?
对这些问题的任何明确的解释将不胜感激!
嗨!随机/增加ID背后的基本思想是避免以某种方式添加重复的ID,而无需手动查找布局xml中的所有修复ID,并检查,如果新ID已经在其中。谢谢你的回答,但你能告诉我,这些id是如何产生的吗?据我所知,就像我的第二种选择:IDE选择一个随机数并添加一个新的ID。 – 2012-08-09 13:10:23
如果你不添加一个ID,那么你将无法通过ID访问该视图。你有没有考虑给视图添加一个标签,然后通过标签访问?迭代通过孩子的选项是否可以找到你想要实现的解决方案?通常,如果您需要访问层次结构中的特定视图,则只需要一个id。如果视图是列表或网格类型父对象,那么您将通过适配器类来访问子视图,该适配器类将处理设置和检索有问题的视图。也许关于这个问题的上下文的进一步信息会有所帮助? – 2012-08-09 13:18:24
我没有具体记住,我试图实现。事实是,问题出现了,当我为RadioButtons写封装类时,创建类似RadioGroup的东西而不是View,只是处理按钮检查状态。这个类处理,选择和取消选择按钮的RadioButtons,当我开始测试它与更大量的RadioButtons时,我需要生成ids dinamically。然后我开始怀疑这些问题。再次感谢您的帮助,我认为最重要的是,运行时生成的id可以通过findViewById()访问。 – 2012-08-09 13:36:16