Search code examples
androidimageviewandroid-resources

Android ImageView setImageResource in code


I have an imageView that I want to display a little icon of the country that you are currently in. I can get the country code, but problem is I can't dynamically change the imageView resource. My image files are all lowercase (Example: country code=US, image file=us)

My code (countryCode is the current countryCode in uppercase letters):

String lowerCountryCode = countryCode.toLowerCase();
String resource = "R.drawable." + lowerCountryCode;
img.setImageResource(resource);

Now, of course this will not work because setImageResource wants an int, so how can I do this?


Solution

  • One easy way to map that country name that you have to an int to be used in the setImageResource method is:

    int id = getResources().getIdentifier(lowerCountryCode, "drawable", getPackageName());
    setImageResource(id);
    

    But you should really try to use different folders resources for the countries that you want to support.