Picasso 不容忍空字符串 URL?

Ely*_*lye 7 android picasso

我有一个使用毕加索加载图像的 viewHolder。DB 将返回一个 URL 路径作为字符串。所以我的代码如下(使用 Kotlin)

  Picasso.with(context).load(url).error(placeholder).transform(transformation)
            .placeholder(placeholder).into(this)
Run Code Online (Sandbox Code Playgroud)

它加载良好。但是,有时 URL 为空。我期待它加载占位符。但它崩溃如下

java.lang.IllegalArgumentException: Path must not be empty.
    at com.squareup.picasso.Picasso.load(Picasso.java:297)
Run Code Online (Sandbox Code Playgroud)

这将迫使我明确进行检查,这并不理想

if (url == null || url.isEmpty()) {
    Picasso.with(context).load(placeholder).transform(transformation).into(this)
} else {
    Picasso.with(context).load(url).error(placeholder).transform(transformation)
            .placeholder(placeholder).into(this)
}
Run Code Online (Sandbox Code Playgroud)

当 URL 字符串为空而不是加载占位符时,这是否会导致毕加索崩溃?

Moh*_*ied 6

这可能已经太晚了,但我今天遇到了这个错误,在阅读了Picasso#load方法的文档后,它指出传递空或空白字符串将导致该方法抛出IllegalArgumentException,传递 null 不会引发异常,但会触发RequestCreator# error如果提供了错误图像,则将加载错误图像,否则目标将不显示任何内容。

如果您无法控制图像网址(假设它来自服务器),您可以尝试以下操作:

 mPicasso.load(photo.isEmpty() ? null : photo)
                .placeholder(placeholder)
                .error(error_placeholder)
                .into(target);
Run Code Online (Sandbox Code Playgroud)


Dou*_*son 4

Picasso.load() 的 javadoc明确指出,当 URL 为 null 或空时,它将抛出 IllegalArgumentException。这就是你可以期待的。