2012-09-28 27 views
12

Ho un imageView che voglio visualizzare una piccola icona del paese in cui ci si trova attualmente. Posso ottenere il codice del paese, ma il problema è che non posso modificare dinamicamente la risorsa imageView. I miei file di immagine sono tutti in minuscolo (Esempio: codice del paese = US, immagine file = noi)Android ImageView setImageResource nel codice

Il mio codice (countryCode è il countryCode corrente in lettere maiuscole):

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

Ora, naturalmente questo non lo farà lavoro perché setImageResource vuole un int, quindi come posso fare questo? Grazie in anticipo: D

risposta

27

Un modo semplice per mappare quel nome del paese che si deve a un int per essere utilizzato nel metodo setImageResource è:

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

Ma dovresti davvero provare a utilizzare risorse di cartelle diverse per i Paesi che desideri supportare.

+0

Grazie mille, questo ha funzionato perfettamente :) – arielschon12

+0

Ha funzionato alla grande. Grazie. – rsc

-3

si può provare questo: -

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

questo non ha aiutato, getDrawable() vuole un int così quando sto fornendo il " R.Drawable.image_name "come variabile di stringa. In ogni modo? – arielschon12

0

si utilizza quel codice

ImageView[] ivCard = new ImageView[1]; 

@override  
protected void onCreate(Bundle savedInstanceState) 

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

Questo non è correlato alla domanda e non compila ... – Karu

15

Impostazione di un'immagine in ImageView con setImageResource() metodo:

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