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?
int id = getResources().getIdentifier(imageName, type, package);
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:
int id = getResources().getIdentifier("com.my.app:drawable/my_image", null, null);
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
Try this:
int id = getResources().getIdentifier(imageName, "drawable", getPackageName());
You need reflection.
Suppose you have R.drawable.image1, if you wanna access it via the String name "image1", following should work:
String Name = "image1";
int id = R.drawable.class.getField(Name).getInt(null);
But notice it only get the Id of the image, you still need the inflater to get the actual drawable from it.
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