Найти кнопку по идентификатору в Котлине - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть пользовательский интерфейс с несколькими кнопками. У них есть идентификаторы "button1", "button2", ... Я хочу установить OnClickListener для всех них в цикле for. Я не хочу вводить строку наподобие button1.setOnClickListener для каждой кнопки.

Я нашел одно решение, которое работает в Java здесь: Android: Использование findViewById () со строкой / в цикле И я попытался адаптировать его в Kotlin.

var buttons = ArrayList<Button>()
for (i in 1..7) {
    var idString = "Button%i"
    var buttonID = getResources().getIdentifier(idString, "id", packageName)
    buttons.add( findViewWithTag(buttonID))
    buttons[i].setOnClickListener(buttonclicked)
}

Это выдает ошибку "Unresolved Reference". Как я могу получить доступ ко всем кнопкам без ввода строки для каждой из них? Заранее спасибо всем вам.

1 Ответ

0 голосов
/ 10 ноября 2019

Вы звоните findViewWithTag() вместо findViewById() в своем коде. Также вы неправильно выполняете интерполяцию строк с помощью var idString = "Button%i". Изменить на это:

val buttons = ArrayList<Button>()
for (i in 1..7) {
    val idString = "Button$i"
    val buttonID = resources.getIdentifier(idString, "id", packageName)
    buttons.add(findViewById(buttonID))
    buttons[i].setOnClickListener(buttonclicked)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...