【发布时间】:2016-07-31 23:53:17
【问题描述】:
我有一个使用 Picasso 加载图像的 viewHolder。数据库将返回 URL 的路径作为字符串。所以我的代码如下(使用 Kotlin)
Picasso.with(context).load(url).error(placeholder).transform(transformation)
.placeholder(placeholder).into(this)
加载正常。但是,有时 URL 为空。我希望它改为加载占位符。但它崩溃如下
java.lang.IllegalArgumentException: Path must not be empty.
at com.squareup.picasso.Picasso.load(Picasso.java:297)
这将迫使我明确地进行检查,这并不理想
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)
}
这是预期毕加索会在 URL 字符串为空而不是加载占位符时崩溃吗?
【问题讨论】:
-
是的,为空字符串加载 Picasso(相对而言)会产生很多开销。
-
如果字符串为空或 url 不可访问,毕加索不会在内部处理,它应该回退到“错误”或“占位符”图像吗?
-
可以,但有时库更容易假设您将使用适当的值,而不是有时在任何地方进行检查。让用户承担一些责任。
-
@zgc7009,当你说“它可以”时,也许你可以和我分享一下......我想把它放进去,以消除我的额外检查。所以我不需要担心数据库是如何传递价值的。如果它们有效,我将发布图像,否则我将退回到错误图像。谢谢。
-
不,我是说他们可以这样设计,但不是那样设计的。你必须给它一个字符串。不幸的是,有时检查只是其中的一部分