2012-09-28 10 views
12

私はあなたが現在いる国の小さなアイコンを表示したいというimageViewを持っています。私は国コードを取得できますが、問題は私が動的にimageViewリソースを変更できないことです。Android ImageView setImageResource in code

私のコード(国番号は大文字で現在COUNTRYCODEです):私の画像ファイルはすべて小文字(国コード= US、画像ファイル= US例):ある

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

、もちろんこれはしませんsetImageResourceはintを必要とするので、どうすればいいですか?事前に ありがとう:あなたはこれを試すことが

答えて

27

あなたはsetImageResource方法で使用するintに持っているその国の名をマップする簡単な方法は次のとおりです。

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

しかし、サポートしたい国のために、さまざまなフォルダリソースを実際に使用するようにしてください。あなたはsetImageResource()方法とImageViewに画像を設定するコード

ImageView[] ivCard = new ImageView[1]; 

@override  
protected void onCreate(Bundle savedInstanceState) 

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

ありがとう、これは完全に働いた:) – arielschon12

+0

Worked great。ありがとう。 – rsc

-3

D: -

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

私は "を提供していたときに、getDrawable()は、同様にint型を望んでいますR.Drawable.image_name "を文字列変数として使用しています。 – arielschon12

0

:助けにはならなかった

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

これは質問に関連しておらず、コンパイルもしていません... – Karu