web-dev-qa-db-fra.com

java.lang.IllegalArgumentException: le chemin ne doit pas être vide dans Picasso

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?

10
user2269164

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);
  }
37
veena

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));
  }
4
ozmank

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.

0
HassanUsman