Однострочная операция "если" - PullRequest
0 голосов
/ 31 октября 2019

У меня есть следующий код:

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

Он работает нормально, но я хотел бы улучшить его и написать как упрощенный и читаемый, если еще блок. Было бы хорошо, если бы я мог сделать одну строкуесли еще заявление, пожалуйста, предложите.

Ответы [ 2 ]

4 голосов
/ 31 октября 2019

Вы можете использовать выражение if:

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

... однако в этом случае isVisible лучше (кредит: Павел ):

dataBinding.cashPaymentCheckImageViewContainer.isVisible = isSelected

Примечание: Есть также isInvisible и isGone.

1 голос
/ 31 октября 2019

Действительно, Kotlin позволяет это.

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

Вы можете сделать это еще лучше (имо):

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 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...