2011-09-25 5 views
16

Je souhaite utiliser une variable au lieu de R.drawable.myimage car j'ai une base de données avec les noms de l'image. Je reçois le nom de la base de données et je veux utiliser la ressource drawable avec ce nom.Ressource pouvant être dessinée à l'aide d'une variable

String flagimage = "R.drawable." + myHelper.getFlagImage(5); 
int resourceId = Integer.parseInt(flagimage); 
Bitmap flag = BitmapFactory.decodeResource(getResources(), resourceId); 

Répondre

36

Vous pouvez utiliser le nom d'une ressource comme

getIdentifier (String name, String defType, String defPackage);

getResources().getIdentifier("us","drawable","com.app"); 

La fonction ci-dessus renvoie une valeur entière même que R.drawable.us.

Voici comment accéder aux noms de ressources.

+0

merci beaucoup – Alex

+2

Juste une note rapide [getIdentifier] (http://developer.android.com/reference/android/content /res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29) renvoie '0' si aucune ressource de ce type n'a été trouvée. (0 n'est pas un ID de ressource valide.) – razzak

16

Vous pouvez utiliser ce code pour obtenir l'identifiant ...

Resources res = this.getResources(); 
int resID = res.getIdentifier(imagename, "drawable", this.getPackageName()); 
+0

Après beaucoup de recherche cela fonctionne beaucoup. Merci –

Questions connexes