Установка изображений Android из строкового значения
В настоящее время я рисую изображение PNG в своем приложении Android так:
ImageView image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(R.drawable.testimage))
Если у меня есть список имен изображений в базе данных, есть ли способ установить выведенное выше с использованием имени изображения? У меня уже есть код для прохождения через базу данных, я просто хочу нарисовать изображение на основе значения, взятого здесь.
Например, запись для БД:
ID: Name: ImageName:
- Test testimage
Итак, когда я читаю эту запись, у меня есть строка со значением "testimage", и тогда я хочу установить обратное изображение на 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;
Однако это не очень эффективно!
Спасибо
Ответы
Ответ 1
Существует способ для этого, вы можете возвращать идентификаторы ресурсов по строкам, используя Resource.getIdentifier() http://developer.android.com/reference/android/content/res/Resources.html
Что-то вроде:
int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");
Ответ 2
Я использую:
int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);
"testimage" - соответствует, например, testimage.jpg, т.е. не включать ".jpg"
"drawable" - это тип ресурса, например: @drawable/testimage
Отметьте Resource.getIdentifier(...)
Ответ 3
Поместите изображения в папку/активы и откройте
image.setImageURI("file:///android_asset/" + nameFromDB);
Ответ 4
String path = "sdcard/camera_app/name.jpg"; img.setImageDrawable(Drawable.createFromPath(путь));