Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting Android images from string value

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

like image 918
ingh.am Avatar asked Nov 30 '10 11:11

ingh.am


2 Answers

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");
like image 109
GeekYouUp Avatar answered Nov 18 '22 17:11

GeekYouUp


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(...)

like image 35
Erik S Avatar answered Nov 18 '22 17:11

Erik S