2010-11-23 7 views
5

J'ai cette base de données de plus de 100 images (de drapeaux de pays) dans mon dossier drawable.Charger dynamiquement l'image dans ImageView dans Android

Maintenant, je veux afficher le drapeau du pays dans lequel vous vous trouvez, dans un ImageView.

je reçois le pays avec String country_variable = address.getCountryCode();

Je tournai l'image avec flag.setImageDrawable(getResources().getDrawable(R.drawable.country_variable));

Comme vous le savez tous les travaux R.drawable.country_variable de wont't parce que le compilateur ne peut pas trouver une image nommée dans country_variable le dossier drawable.

Quelle est la meilleure façon de faire cela?

+0

pourquoi ne pas vous nommez chaque drawable avec son code de pays? et utilisez un hashmap. – techiServices

+0

Je l'ai fait. Les drapeaux sont nommés "fr.png", "de.png", "uk.png", etc. – Galip

+0

ne m'explique pas correctement désolé. hashmap où int est le retraitable. techiServices

Répondre

12

Vous devriez pouvoir utiliser getResources() getIdentifier() pour obtenir l'identifiant par le nom de la ressource.. Quelque chose comme:

flag.setImageDrawable(getResources().getDrawable(getResources().getIdentifier("drawable/" + country_variable, "drawable", getPackageName())); 
+1

Tnx! Ça marche! a dû ajouter .toLowerCase(); bien que. getCountryCode() renvoie deux majuscules et Android n'autorise pas les noms de fichiers en majuscules dans la carte pouvant être dessinée. – Galip

6

Essayez ceci:

flag.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(country_variable, "drawable", getPackageName())); 
+1

Tnx! Ça marche! a dû ajouter .toLowerCase(); bien que. getCountryCode() renvoie deux majuscules et Android n'autorise pas les noms de fichiers en majuscules dans la carte pouvant être dessinée. – Galip

+0

Heureux que cela a fonctionné pour vous :) – xil3

Questions connexes