5 votes

Accéder dynamiquement à une image à partir d'un dossier res Android

J'ai une image dans le dossier Res comme ceci

enter image description here

Je veux accéder à celui-ci dynamiquement comme ceci

holder.Viewcover.setImageDrawable(Drawable.createFromPath("R.id." + CoverimgUrl.get(position)));

CoverimgUrl est une liste qui a deux noms d'images dont l'un est livre_couverture & et un autre est image vide ce tableau est généré dynamiquement, comment puis-je définir cette image à partir de cette liste ?

En un mot, comment accéder dynamiquement à une image qui se trouve dans le dossier drawable et dont j'ai besoin de récupérer le nom dans un tableau ?

8voto

Nirav Ranpara Points 5859
Resources res = getResources();
String mDrawableName = "image_name";
int resourceId = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resourceId);
icon.setImageDrawable(drawable );

1voto

TCA Points 4632

Première marque CoverimgUrl liste d'entiers

List<Integer> CoverimgUrl =new ArrayList<Integer>();
            CoverimgUrl.add(R.drawable.book_cover);
            CoverimgUrl.add(R.drawable.blank_image);

Puis

holder.Viewcover.setImageResource(CoverimgUrl.get(position));

1voto

tbkn23 Points 3038

CreateFromPath attend un chemin d'accès au fichier, pas son ID.

Vous pouvez utiliser les éléments suivants :

int id = getResources().getIdentifier(CoverimgUrl.get(position), "id", getPackageName()) ; holder.Viewcover.setImageDrawable(getResources().getDrawable(id)) ;

getIdentifier() récupère l'ID de la chaîne de caractères. Lorsque vous utilisez la classe "R", elle contient des entiers statiques pour les identifiants. Ainsi, R.id.certain_nom est en fait un entier, qui est l'identifiant de la ressource certain_nom.

Une fois que vous avez obtenu cet entier avec getIdentifier, vous pouvez utiliser getResources().getDrawable() pour obtenir le drawable avec l'ID donné.

Faites-moi savoir si ça marche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X