Je charge l'image à partir de la base de données mysql en utilisant Picasso dans une liste personnalisée. L'image se charge lorsque l'URL est transmise directement, mais lorsque j'attribue l'URL à une chaîne et la transmets, elle génère une exception indiquant que le chemin ne doit pas être vide.
String imageStringUrl = md.Image;
La chaîne d'image contient http://example.com/image.jpg
Je passe à Picasso comme ci-dessous.
Picasso.get()
.load(imageStringUrl)
.into(iview);
Quand je passe comme ça, j'obtiens Java.lang.IllegalArgumentException: le chemin ne doit pas être vide. J'ai essayé l'étape ci-dessus comme ci-dessous mais l'image ne se charge pas.
Picasso.get()
.load(new File(imageStringUrl))
.into(iview);
Quel est le problème avec la déclaration ci-dessus?
J'avais un problème similaire. Vérifiez simplement si votre chaîne URL est vide ou non. s'il est vide, donnez l'image par défaut ou chargez à partir de l'URL. J'espère que cela t'aides.
if (image.isEmpty()) {
iview.setImageResource(R.drawable.placeholder);
} else{
Picasso.get().load(image).into(iview);
}
Vérifiez simplement si votre chaîne d'URL est vide ou non en coupant d'abord le chemin de la chaîne, mais ne vérifiez pas comme image.isEmpty()
mais avec cette vérification:
if (path.trim().length() == 0)
J'ai vérifié le code de Picasso et c'est comme ça qu'ils vérifient comme ça. Pour référence, voici le code de leur base de code:
public RequestCreator load(String path) {
if (path == null) {
return new RequestCreator(this, null, 0);
}
if (path.trim().length() == 0) {
throw new IllegalArgumentException("Path must not be empty.");
}
return load(Uri.parse(path));
}
Je pense que votre md.Image
renvoie une chaîne vide. Essayez donc de mettre directement votre image url
dans picasso
comme ceci:
Picasso.get()
.load(" http://xxx.xxx.com/images/New%20folder/Desert.jpg.")
.into(imageView);
Esperons que ça marche.