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
