Comment définir une source ImageViews par programmation dans Android?

Je crée un élément ui composé qui prend un object (un joueur) et je veux choisir l’image correspondante pour l’équipe pour laquelle ce joueur joue (l’object joueur a une valeur de chaîne pour son numéro d’image. J’ai les images dans les ressources) dossier de mon projet.

Comment spécifier la source correcte pour chaque joueur. S’agit-il d’écrire un grand nombre de if et d’elses (en vérifiant la valeur de la chaîne) et en utilisant res.getDrawable (R.drawable.no1), etc. ou existe-t-il une solution plus élégante pour spécifier une chaîne le chemin vers la source?

Je mettrais la relation entre les chaînes et les images dans une carte:

Map map = new HashMap(); map.put("blah", R.drawable.blah); // etc... 

Ensuite, vous pouvez utiliser la setImageResource(int) :

 ImageView image; image.setImageResource(map.get("blah")); 

Ou, si les chaînes ont le même nom que l’image (comme dans le cas précédent), vous pouvez charger la ressource en utilisant cette méthode: Android et obtenir une vue avec un ID coulé en chaîne

Utilisez setImageResource(int)

Si je comprends bien, vous souhaitez afficher une ressource d’image à partir d’une chaîne. Je le fais dans une application où l’utilisateur peut choisir une image à partir d’un ListPreference personnalisé et l’afficher dans la mise en page MainActivity. L’ID de ressource pouvant être dessiné est stocké dans SharedPreferences en tant que chaîne correspondant à l’exemple d’ID de ressource pouvant être dessiné (Ssortingng): “@ drawable / logo_image”. Je tire la valeur de ListPreference avec:

  SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE); Ssortingng logo_id = (shared.getSsortingng("pref_logo","")); 

Cela retourne la ressource pouvant être dessinée sous la forme d’une chaîne, à savoir @ drawable / logo_image. Ensuite, pour insérer cette dessin / image dans ma mise en page, j’utilise:

  ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo); iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")); 

Cela changera la ressource ImageView en nouveau tirable avec setImageResource () en utilisant le int retourné par la méthode ci-dessous qui retourne un identifiant (int) à partir d’une chaîne représentant la ressource pouvant être dessinée dans com.yourpackage:

  getResources().getIdentifier(logo_id, "drawable", "com.yourpackage") 

Vous pouvez également utiliser cette même méthode pour modifier d’autres ressources qui utilisent un dessin comme les arrière-plans de mise en page, etc. Il vous suffit d’utiliser cette méthode pour obtenir l’ID sous la forme d’un int:

  getResources().getIdentifier("Resource Id Ssortingng", "drawable", "com.yourpackage")