Определить кнопку с помощью строки - PullRequest
0 голосов
/ 01 ноября 2018

Есть ли способ, а не по отдельности, использовать массив для определения 10 кнопок и связанных с ними изображений, которые у меня есть в папке res?

В моем xml уже создано 10 кнопок.

У меня есть 10 пользовательских кнопок в папке ресурсов.

Изображения называются my_button_0, my_button_1, ... и т. Д.

Например:

for (int a = 0; a < 10; a++){
    String z = "my_button_" + Integer.toString(a);
    Button z = findViewById(R.id.z);
    z.setBackgroundResource(R.drawable.z);
}

Нашел несколько связанных вопросов, но не так. Спасибо.

Ответы [ 2 ]

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

Предположим, что идентификаторы кнопок называются button1, button2 ...., вы можете сделать это следующим образом:

 for (int i = 1; i <= 10; i++) {
     int btnId = getResources().getIdentifier("button" + i, "id", this.getPackageName());
     Button btn = findViewById(btnId);
     int drawableId = getResources().getIdentifier("my_button_"+i, "drawable", getPackageName());
     btn.setBackgroundResource(drawableId);
 }
0 голосов
/ 02 ноября 2018

К сожалению, нет способа, как вы упомянули. Вы можете сделать что-то вроде этого:

private int getButtonId(int i) {
    switch (i) {
        case 0:
            return R.id.my_button_1;
        case 1:
            return R.id.my_button_2;
        case 2:
            return R.id.my_button_3;
        case 3:
            return R.id.my_button_4;
        case 4:
            return R.id.my_button_5;
        case 5:
            return R.id.my_button_6;
        case 6:
            return R.id.my_button_7;
        case 7:
            return R.id.my_button_8;
        case 8:
            return R.id.my_button_9;
        case 9:
            return R.id.my_button_10;
    }
}

// в вашем методе

for (int a = 0; a < 10; a++){
   Button z = findViewById(getButtonId(a));
   z.setBackgroundResource(R.drawable.z); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...