Home > database >  Increment/Decrement visibility Button Kotlin
Increment/Decrement visibility Button Kotlin

Time:01-20

i have some issue with button Visibility

    var number = 1
    mBinding.llNext.setOnClickListener {
        number  = 5
        mBinding.tvCount.text = number.toString()
    }

    mBinding.llBack.setOnClickListener {
        number -= 5
        if(number <= 0) {
            mBinding.llBack.visibility = View.GONE
        } else if (number >= 0) {
            mBinding.llBack.visibility = View.VISIBLE
            mBinding.tvCount.text = number.toString()
        }
       

when the number was 0 the button visibility Gone, but when im click Next and the number was more than 0, that button cant show..

CodePudding user response:

You have to set visibility on next button click as well

  var number = 1
        mBinding.llNext.setOnClickListener {
            number  = 5
            if(number <= 0) {
                mBinding.llBack.visibility = View.GONE
            } else if (number >= 0) {
                mBinding.llBack.visibility = View.VISIBLE
                mBinding.tvCount.text = number.toString()
            }
        }

        mBinding.llBack.setOnClickListener {
            number -= 5
            if(number <= 0) {
                mBinding.llBack.visibility = View.GONE
            } else if (number >= 0) {
                mBinding.llBack.visibility = View.VISIBLE
                mBinding.tvCount.text = number.toString()
            }

CodePudding user response:

the code that could make the button visible is only executed in the OnClickListenerof the button that you made disappear. So you need to include that in the other OnClickListeneras well. And since that would be the same code twice it's better to extract it to a separate fucntion, so like this for example:

var number = 1
mBinding.llNext.setOnClickListener {
    number  = 5
    handleClick()
}

mBinding.llBack.setOnClickListener {
    number -= 5
    handleClick()
}

fun handleClick() {
    if(number <= 0) {
        mBinding.llBack.visibility = View.GONE
    } else if (number >= 0) {
        mBinding.llBack.visibility = View.VISIBLE
    }
    mBinding.tvCount.text = number.toString()
}

Bonus:
you could make the visibility check more compact like this:

mBinding.llBack.isVisible = number > 0
  •  Tags:  
  • Related