Подтвердить что ты не робот

Найти drawable by string

Возможный дубликат:
Android - открыть ресурс из строки @drawable

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

Хорошо, вот мой вопрос:

Я выберу из внешней базы данных строку, например: 'picture0001'.

В папке res/drawable у меня есть изображение, имя которого - picture0001.

Я хотел бы установить это изображение в качестве фона (источника) ImageView.

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

Большое вам спасибо.

4b9b3361

Ответ 1

Да, вы можете посмотреть его по имени, используя Resources.getIdentifier().

Context context = imageView.getContext();
int id = context.getResources().getIdentifier("picture0001", "drawable", context.getPackageName());
imageView.setImageResource(id);

Это неэффективно, но он работает, чтобы искать нерегулярные ресурсы.

Ответ 2

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

Class c = Class.forName("your.project.package.R");
Field f = c.getDeclaredField("drawable");
Class d = f.getDeclaringClass();
Field f2 = d.getDeclaredField("yourstring");
int resId = f2.getInt(null);
Drawable d = getResources().getDrawable(resId);

Хотя, лучшее решение - это то, что предложил MarvinLabs.