skip to Main Content

I have a stop button that turns all my checkboxes red.
When I select a checkbox it will turn blue, and when I uncheck it it will turn black.

I want my checkboxes to turn to red when their previous color was red and I want my checkboxes to turn black when their previous color was black.

This is the code I have right now to change the colors.

Change checked color

for (checkBox in checBoxes)
        {
            checkBox.setOnClickListener(View.OnClickListener {
                if (checkBox.isChecked) {
                    checkBox.setBackgroundResource(R.drawable.blue_button)
                } else {
                    checkBox.setBackgroundResource(R.drawable.black_button)
                }
            })

        }

Stop button

stopBtn.setOnClickListener {
for (checkBox in checBoxes)
    {
      checkBox.setBackgroundResource(R.drawable.red_button)
    }

}

2

Answers


  1. Chosen as BEST ANSWER

    This is my updated code @dženan-bećirović

    Stop button

    
    stopBtn.setOnClickListener {
    for (checkBox in checBoxes)
        {
          checkBox.setBackgroundResource(R.drawable.red_button)
          checkBoxBG = checkBox.background
        }
    
    }
    

    Change checked color

    for (checkBox in checBoxes)
            {
                checkBox.setOnClickListener(View.OnClickListener {
                    if (checkBox.isChecked) {
                        checkBoxBG = checkBox.background
                        checkBox.setBackgroundResource(R.drawable.blue_button)
                    } else {
                           when {
                            checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.RED.colorValue)?.getConstantState()) == true -> {
                                checkBox.setBackgroundResource(R.drawable.red_button)
                            }
                            checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.BLACK.colorValue)?.getConstantState()) == true -> {
                                checkBox.setBackgroundResource(R.drawable.black_button)
                            }
                            checkBoxBG?.getConstantState()?.equals(getDrawable(CheckboxColorStatus.YELLOW.colorValue)?.getConstantState()) == true -> {
                                checkBox.setBackgroundResource(R.drawable.yellow_button)
                            }
                        }
                    }
                })
    
            }
    

  2. You can create boolean that will tell if user have clicked stop button like this:

    val isStopped = false
    

    Than make your onClickListener lambda function like this:

    stopBtn.setOnClickListener {
    isStopped = true
    for (checkBox in checBoxes)
        {
          checkBox.setBackgroundResource(R.drawable.red_button)
        }
    
    }
    

    And then:

    for (checkBox in checBoxes)
            {
                checkBox.setOnClickListener(View.OnClickListener {
                    if (checkBox.isChecked) {
                        checkBox.setBackgroundResource(R.drawable.blue_button)
                    } else {
                    if(isStopped)
                        checkBox.setBackgroundResource(R.drawable.red_button)
                    else
                        checkBox.setBackgroundResource(R.drawable.black_button)
                    }
                })
    
            }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search