Установить изображение на кнопку, где имя кнопки приходит из базы данных - PullRequest
0 голосов
/ 18 мая 2018

Если мне нужно программно установить изображение на кнопке, тогда я использую следующий код:

        Drawable img;
        ToggleButton tb_button = (ToggleButton) findViewById(R.id.tglButton);
        img = ResourcesCompat.getDrawable(getResources(), R.drawable.p189, null );
        tb_button.setCompoundDrawables(img,null,null,null);

Теперь ситуация такова, что я прочитал имя изображения из базы данных вПеременная.Итак, давайте предположим, что моя переменная имеет следующее значение:

String img_str= "p189";

Теперь, как мне установить одно и то же изображение на кнопке, когда имя изображения хранится внутри переменной.

Ответы [ 4 ]

0 голосов
/ 18 мая 2018

Так подробно о том, что АБК сказал.Вы можете получить Drawable ResId и затем использовать его, чтобы получить drawable в функции, подобной этой:

private Drawable getDrawableFromString(String name) {
    int resId = getResources().getIdentifier(name, "drawable", getPackageName());
    return getResources().getDrawable(resourceId);
}
0 голосов
/ 18 мая 2018

Вы можете динамически создавать ссылки на идентификаторы ресурсов для рисования следующим образом

int resId=getResources().getIdentifier(img_str, "drawable", context.getPackageName())
img = ResourcesCompat.getDrawable(getResources(), resId, null )

и, конечно же, не забывайте о try catch в случае неправильного имени ресурса

0 голосов
/ 18 мая 2018

Вы можете получить его по имени,

Resources resources = context.getResources();
final int resourceId = resources.getIdentifier(imgName, "drawable", context.getPackageName());
return resources.getDrawable(resourceId);
0 голосов
/ 18 мая 2018

используйте следующий метод для получения изображения из строки.

 private int getImageFromString(String name) {
    int resId = getResources().getIdentifier(name, "drawable", getPackageName());
    return resId;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...