java.lang.IllegalArgumentException:Picasso中的路径不能为空

时间:2016-03-01 11:29:48

标签: java android picasso

我正在使用Picasso将图像从mysql DB加载到自定义列表视图中。直接传递URL时会加载图像,但是当我将URL分配给字符串并传递它时,它会抛出异常,表示路径不能为空。

compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'

图片字符串包含http://example.com/image.jpg

我正如下面的毕加索一样过世。

String imageStringUrl = md.Image;

当我像这样传递时,我得到java.lang.IllegalArgumentException:Path不能为空。我已尝试过上面的步骤,但图片未加载。

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

上述声明有什么问题?

4 个答案:

答案 0 :(得分:29)

我有类似的问题。只需检查您的URL字符串是否为空。如果为空,则从URL提供默认图像或加载。希望这会有所帮助。

if (image.isEmpty()) {
   iview.setImageResource(R.drawable.placeholder);
} else{
    Picasso.get().load(image).into(iview);
  }

答案 1 :(得分:3)

首先修剪字符串路径,检查你的网址字符串是否为空,但不要像image.isEmpty()那样检查,但是检查一下:

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

我检查了毕加索的代码,这就是他们这样检查的方式。这里参考的是代码库中的代码:

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

答案 2 :(得分:0)

我认为你的md.Image正在返回一个空字符串。因此,请尝试直接将image url放入picasso,如下所示:

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

希望它有效。

答案 3 :(得分:0)

我遇到了同样的问题,但我意识到我犯了一个简单的错误。

在我的代码中,我将图像 URL 保存在一个片段中,然后检索图像 URL,但那时我没有调用存储数据的 var ...

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

因此显示消息 java.lang.IllegalArgumentException: Path must not be empty in Picasso。因为参数真的是空的。

很简单,这让我浪费了 1 个小时。不过好在现在已经解决了。