If I get the image name as a variable like following:
var imageName = SERVICE.getImg();
Then, how can I get the resource with R.drawable.????
, I tried R.drawable[imageName]
, but it failed. Any suggestions?
If I get the image name as a variable like following:
var imageName = SERVICE.getImg();
Then, how can I get the resource with R.drawable.????
, I tried R.drawable[imageName]
, but it failed. Any suggestions?
Use this function
You can use getIdentifier method which will give you the resource id by it's name. Check this thread for more details.
You need reflection.
Suppose you have R.drawable.image1, if you wanna access it via the String name "image1", following should work:
But notice it only get the Id of the image, you still need the inflater to get the actual drawable from it.
Try this:
This will get you the ID of the resource you are looking for. With it, you can then access the resource from the R class.
Using only the
name
parameter:You can also include all the 3 info in the "name" parameter using the following format:
"package:type/image_name"
, something like:This is useful when you're working with external components or libraries that you can't, or don't want to, change how
getIdentifier()
is called. e.g.: AOSP Launcher3