Установка изображений Android из строкового значения

В настоящее время я рисую PNG-изображение в своем приложении для Android так:

ImageView image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(R.drawable.testimage))

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

например, запись для БД:

ID:    Name:    ImageName:
-      Test     testimage

поэтому, когда я читаю эту запись, у меня есть строка со значением "testimage" и тогда я хотел бы установить изображение drawable в R.drawable.testimage.

один из способов я думал, это будет что-то вроде этого:

int image = R.drawable.blank; // blank image

// testimage.png is the image name from the database
if(imageName.toString().equals("testimage.png"))
    image = R.drawable.testimage;
else if(imageName.toString().equals("another.png"))
    image = R.drawable.another;
else if(imageName.toString().equals("etc.png"))
    image = R.drawable.etc;

однако это не очень эффективно!

спасибо

4 ответов


существует метод для этого, вы можете восстановить идентификаторы ресурсов по строке с помощью ресурсов.getIdentifier() http://developer.android.com/reference/android/content/res/Resources.html

что-то типа:

int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");

Я:

int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);

"testimage" - соответствует например testimage.jpg, т. е. не включать ".в JPG"

"drawable" - это тип ресурса, например: @drawable/testimage

Регистрация ресурсы.getIdentifier(...)


поместите изображения в папку assets / и откройте

image.setImageURI("file:///android_asset/" + nameFromDB);

строковый путь = " sdcard / camera_app / name.формат jpg"; НВФ.setImageDrawable(Катры.createFromPath(путь));