我正在生成一个随机数量的按钮,需要为每个按钮设置唯一ID以供进一步使用。我使用View.generateViewID()
来设置ID,但是我怎么能获得ID呢?
相反,是否可以通过将ID设置为变量来对按钮进行编号,每次递增1而不是以某种方式生成随机ID?
答案 0 :(得分:0)
generateViewID()
会返回一个整数,保证在R
类中是唯一的。
虽然我怎么能获得ID?
int generatedId = View.generateViewID();
现在,您可以将generatedID
设置为任意视图的ID,然后通过view.getId()
将其恢复;
相反,是否可以通过将ID设置为变量来对按钮进行编号,每次递增1而不是以某种方式生成随机ID?
从理论上讲,你可以做到这一点,在大多数情况下你都没有问题。但是你怎么肯定你不会碰到R
类中生成的另一个id?不要对生成的id类型做出假设,今天它们是非常庞大的数字,也许明天算法可能会改变。此外,框架为您提供了生成ID的API,为什么要忽略它?采用框架建议你的模式。
答案 1 :(得分:0)
除了您正在遵循的方法之外,还有另一种简单而简洁的方法。对于动态添加的控件(Button,Textview),您必须维护该控件的数组/列表,例如List<Button> lstButtons
,并将id设置为您必须在基本ID上选择/设置,例如int buttonBaseId = 100;
。对于每个动态添加的按钮,您必须将其增加1,例如buttonBaseId += 1;
。
此方法也可以遵循多个控件。假设你想动态添加TextView
,你可以选择从1000开始的Textview base id,并为每个随机添加的textview增加1。
通过遵循此方法,您可以通过id或index在任何位置从相应列表中检索任何控件。
通过这种方式,您可以控制按钮的开始位置。希望这会对你有帮助:)