我有以下代码:
private fun setCashPaymentContainer(isSelected: Boolean) {
if (isSelected) {
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE
} else {
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.GONE
}
}
它可以正常工作,但是我想对其进行改进,并在其他情况下以简化和可读的方式编写。如果else语句可以建议一行,请提出建议。
答案 0 :(得分:4)
您可以使用if表达式:
dataBinding.cashPaymentCheckImageViewContainer.visibility = if(isSelected) View.VISIBLE else View.GONE
...但是在这种情况下,isVisible
更好(信用:Pawel):
dataBinding.cashPaymentCheckImageViewContainer.isVisible = isSelected
注意:还有isInvisible
和isGone
。
答案 1 :(得分:1)
实际上,科特林允许这样做。
private fun setCashPaymentContainer(isSelected: Boolean) {
dataBinding.cashPaymentCheckImageViewContainer.visibility = when {
isSelected -> View.VISIBLE
else -> View.GONE
}
}
您实际上可以使它更好(imo):
inline fun View.showIf(condition: (View) -> Boolean) {
val shouldShow = condition(this)
this.visibility = when {
shouldShow -> View.VISIBLE
else -> View.GONE
}
}
现在您可以做
private fun setCashPaymentContainer(isSelected: Boolean) {
dataBinding.cashPaymentCheckImageViewContainer.showIf { isSelected }
}