我正在使用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);
上述声明有什么问题?
答案 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 个小时。不过好在现在已经解决了。