【发布时间】:2015-04-07 22:05:30
【问题描述】:
我正在向 Java 代码中的布局添加多个元素。例如 java 在 imageview 之前编码到已知的 layout 与一些 layoutparams。
layout.addView(imageview, layoutparams);
我认为我不能在 XML 中执行此操作,因为我不知道将添加多少元素(由用户确定)。
我需要为这些添加的元素设置并知道 ID,以便以后可以参考它们。
我需要的是(添加之前):
imageview.setId(??);
这是一个好方法吗?如果是这样,我该如何使用它? 我主要担心的是我不确定 R.id 是如何工作的。 例如,我可以将这些 ID 设为 100001、100002、100003... 吗?我不会覆盖任何东西吗? 我会将这些 ID 存储在列表/数组中,以便稍后在代码中使用。
public static int generateViewId ()
在 API 级别 17 中添加 生成适合在 setId(int) 中使用的值。 此值不会与构建时生成的 ID 值冲突 适合 R.id。
如果由于多个方法添加元素而在运行时发生碰撞怎么办。有没有类似sql的事务? 顺便说一句:使用 API17 并不是我想要的。略超过 50% 的市场份额。
【问题讨论】:
-
您真的需要这些视图的 id 吗? View refs 还不够好?
-
如果项目数量未知,我宁愿使用
layout.getChildAt()和layout.getChildCount()管理它们。基本上你想设置一个增量int引用,但你已经有了一个。无论如何,这取决于您将如何处理这些视图。