我正在尝试检查个人资料是否设置了图片网址,如果是,请将其加载到ImageView
:
val hasImage = image != null && image.isNotBlank()
if (hasImage) {
Picasso.with(context).load(image).into(row.image)
}
image
是一个可以为空的字符串。问题是,即使hasImage
为假,它仍会加载图像,如您所见:
但是,如果我val hasImage = false
,它的行为与预期一致。
我对这里发生的事情感到非常困惑。为什么if
条件仍在执行?
答案 0 :(得分:4)
可能存在编译问题。截图显示了一个不可能的场景。你在哪里开始应用程序?尝试重建然后再次调试。还尝试添加一些日志。
这不是因为您选择检查布尔表达式的方式......
答案 1 :(得分:1)
如果图像是空字符串(""),则布尔值将被计算为true并执行if分支。为清楚起见,相应地更改条件和/或使用此标准库函数:
isNullOrBlank()
(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-blank.html)
像这样:
if (!image.isNullOrBlank()) {
Picasso.with(context).load(image).into(row.image)
}