一行“如果”操作

时间:2019-10-31 15:05:07

标签: kotlin

我有以下代码:

 private fun setCashPaymentContainer(isSelected: Boolean) {      
        if (isSelected) {
            dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE
        } else {
            dataBinding.cashPaymentCheckImageViewContainer.visibility = View.GONE
        }
    }

它可以正常工作,但是我想对其进行改进,并在其他情况下以简化和可读的方式编写。如果else语句可以建议一行,请提出建议。

2 个答案:

答案 0 :(得分:4)

您可以使用if表达式:

dataBinding.cashPaymentCheckImageViewContainer.visibility = if(isSelected) View.VISIBLE else View.GONE

...但是在这种情况下,isVisible更好(信用:Pawel):

dataBinding.cashPaymentCheckImageViewContainer.isVisible = isSelected

注意:还有isInvisibleisGone

答案 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 }
}