我尝试与动态生成的按钮进行交互。我想为单击的那些播放器以及单击时靠近水平或垂直轴的那些播放器更新文本和背景颜色。
我尝试过的事情。我在xml中找到了按钮的id属性,这使我想到可以创建文本键来引用以编程方式生成的按钮。但是,当我尝试分配ID时-IDE期望的是数字(Int),而不是字符串。由于按钮形成一个正方形数组-我决定通过4位数字对每个按钮进行编码,其中前2位代表行号,另外两位代表列号。尽管当我尝试使用 findViewById 时,IDE告诉我它期望的是特殊的id数据类型,而不是数字。
这就是现在的样子:
for (i in 1..size) {
for (j in 1..size){
val button = Button(this)
button.id = i*100 + j
constraintLayout.addView(button)
}
}
我可以看什么想法或方法?
答案 0 :(得分:0)
如果是动态创建的,则可以将其保存在变量(或数组)中供以后使用。
val myButtons = ArrayList<Button>()
for (i in 1..size) {
for (j in 1..size){
val button = Button(this)
myButtons.add(button)
constraintLayout.addView(button)
}
}
如果您的布局具有动态创建的视图,并且知道其顺序,则可以使用getChildAt(index)
来获得它们。
或者,您可以分配保存在xml like this中的ID。