代码中的Android ImageView setImageResource

时间:2012-09-28 19:42:43

标签: android imageview android-resources

我有一个imageView,我想显示您当前所在国家/地区的一个小图标。我可以获取国家/地区代码,但问题是我无法动态更改imageView资源。我的图片文件全部为小写(例如:国家/地区代码= US,图片文件=我们)

我的代码(countryCode是大写字母的当前countryCode):

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

现在,当然这不起作用,因为setImageResource想要一个int,所以我该怎么做呢? 提前致谢:D

5 个答案:

答案 0 :(得分:30)

将您所拥有的国家/地区名称映射到int setImageResource方法的一种简单方法是:

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

但您应该尝试为要支持的国家/地区使用不同的文件夹资源。

答案 1 :(得分:21)

这是使用setImageResource()方法将图片设置为ImageView的方法:

ImageView myImageView = (ImageView)v.findViewById(R.id.img_play);
// supossing to have an image called ic_play inside my drawables.
myImageView.setImageResource(R.drawable.ic_play);

答案 2 :(得分:0)

您使用该代码

ImageView[] ivCard = new ImageView[1];

@override    
protected void onCreate(Bundle savedInstanceState)  

ivCard[0]=(ImageView)findViewById(R.id.imageView1);

答案 3 :(得分:0)

您可以使用以下代码:

// Create an array that matches any country to its id (as String):
String[][] countriesId = new String[NUMBER_OF_COUNTRIES_SUPPORTED][];

// Initialize the array, where the first column will be the country's name (in uppercase) and the second column will be its id (as String):
countriesId[0] = new String[] {"US", String.valueOf(R.drawable.us)};
countriesId[1] = new String[] {"FR", String.valueOf(R.drawable.fr)};
// and so on...

// And after you get the variable "countryCode":
int i;
for(i = 0; i<countriesId.length; i++) {
   if(countriesId[i][0].equals(countryCode))
      break;
}
// Now "i" is the index of the country

img.setImageResource(Integer.parseInt(countriesId[i][1]));

答案 4 :(得分:-1)

你可以试试这个: -

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.image_name));