2012-09-28 24 views
12

我有一個imageView,我想顯示您目前所在的國家的一個小圖標。我可以得到國家代碼,但問題是我無法動態更改imageView資源。我的圖像文件都是小寫(例如:國家代碼= US,圖像文件= US)Android ImageView setImageResource代碼

我的代碼(COUNTRYCODE是大寫字母當前COUNTRYCODE):

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

現在,當然這不會因爲setImageResource需要一個int,所以我該怎麼做? 在此先感謝:d

回答

27

一個簡單的方法來映射,你必須一個intsetImageResource方法中使用該國的名字是:

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

但是,您應該真的嘗試爲您想要支持的國家使用不同的文件夾資源。

+0

非常感謝,這工作完美:) – arielschon12

+0

工作很好。謝謝。 – rsc

-3

你可以試試這個: -

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

沒有幫助,getDrawable()想要一個int以及當我提供「 R.Drawable.image_name「作爲字符串變量..任何方式? – arielschon12

0

您使用的代碼

ImageView[] ivCard = new ImageView[1]; 

@override  
protected void onCreate(Bundle savedInstanceState) 

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

這與問題無關,並且不會編譯... – Karu

15

設置圖像到ImageViewsetImageResource()方法:

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);