java.lang.IllegalArgumentException: Path must be empty in Picasso

2022-09-03 08:46:52

我正在使用毕加索将mysql DB中的图像加载到自定义列表视图中。当直接传递URL时,图像正在加载,但是当我将URL分配给字符串并传递它时,它会引发异常,说Path一定不为空。

String imageStringUrl = md.Image;

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

我正在像下面这样经过毕加索。

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

当我像这样通过时,我得到java.lang.IllegalArgumentException:Path不能为空。我已经尝试了上述步骤,如下所示,但图像未加载。

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

上述声明有什么问题?


答案 1

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

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

答案 2

只需通过首先修剪字符串路径来检查您的url字符串是否为空,但不要检查类似,而是进行以下检查: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));
  }

推荐