Je dois montrer un drawable
de res
dans un ImageView
. Dans cette application, j'utilise Picasso pour plusieurs raisons.
Dans ce cas, je dois charger le drawable
en utilisant son URI et non son id. Pour ce faire, voici mon code:
uri = Uri.parse(ContentResolver.SCHEME_Android_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName);
où drawableName utilisé ici sont des noms de fichier plutôt que leurs identifiants de ressource.
Ensuite
Picasso.with(context).load(uri).into(imageView);
Je sais pour sûr que le nom tirable est correct, mais Picasso semble qu'il n'aime pas cet uri.
J'ai trouvé la réponse. Malheureusement, Picasso n'autorise pas le chargement dessinable via l'URI. C'est une fonctionnalité entrante.
Si les images se trouvent dans votre dossier dessinable, vous pouvez simplement le charger.
Picasso.with(context).load(R.drawable.drawableName).into(imageView);
et picasso le chargera sans avoir besoin d'un Uri.
Vous pouvez paresseusement charger des fichiers d'image locaux à partir de votre dossier dessinable si vous connaissez la valeur entière de l'image que vous souhaitez charger.
Ensuite, vous pouvez simplement faire:
Picasso.with(getContext()).load(imageResourceId)
.error(R.drawable.ic_launcher)
.into(imageView);
Où
imageView
est la vue que vous souhaitez afficher l'image. Par exemple:
imageView = (ImageView) convertView
.findViewById(R.id.itemImage);
Et où
imageResourceId
est la valeur entière du dessinable. Vous pouvez récupérer cette valeur entière en:
int productImageId = resources.getIdentifier(
productImageName, "drawable", context.getPackageName());
aussi bien que
productImageName
est le nom du dessin que vous souhaitez dessiner (c'est-à-dire "ic_launcher")
CELA PEUT TOUT ÊTRE FAIT À L'INTÉRIEUR DE L'ADAPTATEUR
De picasso v2 + voici une grosse modification. La nouvelle version est très utile pour gérer les données du cache d'images. Il utilise l'instance Singleton.
[~ # ~] gradle [~ # ~]
implementation 'com.squareup.picasso:picasso:2.71828'
Définir une image dessinable
Picasso.get()
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
Bonus, dessinez par nom:
public static int getDrawableIdFromFileName(Context context, String nameOfDrawable) {
return context.getResources().getIdentifier(nameOfDrawable, "drawable", context.getPackageName());
}
Comme mentionné dans la documentation de Picasso .
ils prennent désormais en charge le chargement de l'image à partir de l'URI comme suit:
load(Android.net.Uri uri)
vous devez donc faire quelque chose comme ceci:
Picasso.with(context).load(uri).into(imageView);
comme ce que vous faites déjà.
J'espère que ça t'as aidé .