Android - Kotlin - Как обратиться к динамически генерируемой кнопке? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь взаимодействовать с динамически генерируемыми кнопками.Я хочу обновить текст и цвет фона для тех игроков, которые нажали, и для тех, кто находится рядом с горизонтальной или вертикальной осью в момент нажатия.

Что я пробовал .Я нашел свойство id кнопки в xml, что привело меня к мысли, что я могу создать текстовый ключ для ссылки на программно генерируемую кнопку.Но когда я попытался назначить идентификатор - 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)
    }
}

Какую идею или метод я мог бы рассмотреть?

1 Ответ

0 голосов
/ 20 ноября 2018

Если вы создали его динамически, вы можете сохранить его в переменной (или массиве) для дальнейшего использования.

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 , например: .

...