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