Currently I'm drawing a PNG image in my Android application like so:
ImageView image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(R.drawable.testimage))
If I have a list of image names in a database, is there a way to set the drawable above using the image name? I already have the code to go through the database, I'm just looking to draw the image based on the value taken from here.
For example, a record for the DB:
ID: Name: ImageName:
- Test testimage
So when I'm reading this record, I have a string with the value of "testimage" and I'd then want to set the image drawable to R.drawable.testimage
.
One way I was thinking of doing it would be something like this:
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;
However this isn't very efficient!
Thanks
There is a method for doing that, you can retreive resource IDs by string using Resources.getIdentifier() http://developer.android.com/reference/android/content/res/Resources.html
Something like:
int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");
I'm using:
int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);
"testimage" - corresponds to for instance testimage.jpg, i.e. dont include ".jpg"
"drawable" - is the resource type, like in: @drawable/testimage
Check Resources.getIdentifier(...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With