Свяжите массив кнопок с их идентификатором ресурса

У меня есть 20 кнопок в массиве, и мне нужно связать каждую кнопку со своим идентификатором ресурса.

У меня очень мало опыта в Java и еще меньше в Android.

Что я делаю сейчас, так это:

        botonColor[0] = findViewById(R.id.newlist_btn_01);
        botonColor[1] = findViewById(R.id.newlist_btn_02);
        botonColor[2] = findViewById(R.id.newlist_btn_03);
        botonColor[3] = findViewById(R.id.newlist_btn_04);
        botonColor[4] = findViewById(R.id.newlist_btn_05);
        botonColor[5] = findViewById(R.id.newlist_btn_06);
        botonColor[6] = findViewById(R.id.newlist_btn_07);
        botonColor[7] = findViewById(R.id.newlist_btn_08);
        botonColor[8] = findViewById(R.id.newlist_btn_09);
        botonColor[9] = findViewById(R.id.newlist_btn_10);
        botonColor[10] = findViewById(R.id.newlist_btn_11);
        botonColor[11] = findViewById(R.id.newlist_btn_12);
        botonColor[12] = findViewById(R.id.newlist_btn_13);
        botonColor[13] = findViewById(R.id.newlist_btn_14);
        botonColor[14] = findViewById(R.id.newlist_btn_15);
        botonColor[15] = findViewById(R.id.newlist_btn_16);
        botonColor[16] = findViewById(R.id.newlist_btn_17);
        botonColor[17] = findViewById(R.id.newlist_btn_18);
        botonColor[18] = findViewById(R.id.newlist_btn_19);
        botonColor[19] = findViewById(R.id.newlist_btn_20);

Моей первой идеей было заменить текстовую строку, соответствующую идентификатору, ее числовым эквивалентом, но числа не следуют определенному порядку, и я не знаю, где изменить эти числовые литералы на другие, следующие за последовательностью.

Может ли кто-нибудь помочь мне сделать это более правильно?

Большое спасибо и извините за мой английский.

Вы можете поместить все кнопки в контейнер и перебирать контейнер для его дочерних элементов.

Rafsanjani 22.12.2020 16:00

Привет, я чувствую, что вы можете сделать это по-другому, поэтому, пожалуйста, предоставьте код, чтобы мы могли помочь вам и решить, как это можно сделать наилучшим образом.

issamux 22.12.2020 16:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

я обычно делаю так

int ids[] = { R.id.button1, R.id.button2, R.id.Button3 };
List<Button> buttons = new ArrayList<>();
for(int id : ids) {
    buttons.add(findViewById(id));
}

Любая дополнительная конфигурация, которую вы хотите, например, настройка обработчиков кликов, может быть включена в цикл. Затем вы можете сделать button.get(index), чтобы получить индекс кнопки.

Спасибо, это быстрее и элегантнее моего решения.

Daniel Román 22.12.2020 17:43

Другие вопросы по теме