16

I am loading image from mysql DB using Picasso into custom listview. The image is loading when the URL is passed directly but when i assign the URL to string and pass it then it throws exception saying Path must not be empty.

String imageStringUrl = md.Image;

Image string contains http://example.com/image.jpg

I am passing in Picasso like below.

Picasso.get()
.load(imageStringUrl)
.into(iview);                                                           

When I pass like this I am getting java.lang.IllegalArgumentException: Path must not be empty. I have tried the above step like below but the image is not loading.

Picasso.get()
.load(new File(imageStringUrl))
.into(iview);

What is wrong with the above declaration?

Beast77
  • 193
  • 1
  • 17
user2269164
  • 1,095
  • 2
  • 15
  • 31

4 Answers4

46

I had a similar problem. Just check if your URL string is empty or not. if it is empty give the default image or load from URL. Hope this helps.

if (image.isEmpty()) {
   iview.setImageResource(R.drawable.placeholder);
} else{
    Picasso.get().load(image).into(iview);
  }
Beast77
  • 193
  • 1
  • 17
Veena
  • 869
  • 1
  • 7
  • 22
4

Just check if your url string is empty or not by first trimming the string path, but do not check like image.isEmpty() but with this check:

if (path.trim().length() == 0)

I checked the code from Picasso and that is how they are checking like this. For reference here is code from their code base:

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));
  }
ozmank
  • 763
  • 1
  • 8
  • 23
  • Strings.isEmpty works like this : "public inline fun CharSequence.isEmpty(): Boolean = length == 0". So, I don’t think that « trim » or not is relevant – Jean-baptiste Valero Nov 27 '19 at 15:23
0

I think your md.Imageis returning an empty string. So try directly put your image url in picasso like this:

Picasso.get()
.load(" http://xxx.xxx.com/images/New%20folder/Desert.jpg.")
.into(imageView);

Hope it works.

Beast77
  • 193
  • 1
  • 17
HassanUsman
  • 1,787
  • 1
  • 20
  • 38
  • this kind of solution is not usfull, we don't always know the link, sometimes the link is inside a variable so please try to give a better detailed explanation – Firas Chebbah Mar 25 '20 at 17:00
0

I had the same problem, but I realized that I had made a simple mistake.

In my code, I save the image URL in a snippet, and then retrieve the image URL, but at that point I was not calling the var that stores the data ...

imagemRef.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
   @Override
   public void onComplete(@NonNull Task<Uri> task) {
    Uri url = task.getResult();
    
   urlImagemSelecionada = url.toString(); // This line I have forgot
   }
});

So the message java.lang.IllegalArgumentException: Path must not be empty in Picasso was presented. Because the parameter was really empty.

Something simple, that made me lose 1 hour. But luckily it has now been resolved.

blackgreen
  • 34,072
  • 23
  • 111
  • 129