안드로이드 체크박스 체크 메서드의 차이점 setOnCheckedChangeListener vs setOnClickListener
안드로이드에서 체크박스를 사용하다보면 다들 한번 식 체크박스 체크와 같은 처리를 할 경우가 생기기에 아래와 같은 메서드를 사용할 일이 있을 것이다
1
2
3
4
5
6
7
checkBox1.setOnCheckedChangeListener { _, isChecked ->
allCheckBox.isChecked = isChecked && checkBox2.isChecked
}
checkBox1.setOnClickListener {
allCheckBox.isChecked = checkBox1.isChecked && checkBox2.isChecked
}
setOnCheckedChangeListener 와 setOnClickListener 둘 다 비슷해보여서 아무거나 사용해도 된다고 생각할 수 있지만 두 메서드는 엄연히 차이가 존재한다
setOnClickListener
1
2
3
checkBox1.setOnClickListener {
allCheckBox.isChecked = checkBox1.isChecked && checkBox2.isChecked
}
우선 먼저 우리가 클릭을 구현할 때 가장 많이 사용하여 익숙한 setOnClickListener 먼저 살펴보면 이 메서드는 우리가 아는 것처럼 해당 체크박스를 클릭할 때 실행된다
그렇기에 만약 체크박스가 클릭 되었다면 실행할 기능들을 내부에 넣으면 된다
setOnCheckedChangeListener
checkBox1.setOnCheckedChangeListener { _, isChecked -> allCheckBox.isChecked = isChecked && checkBox2.isChecked }
그렇다면 setOnCheckedChangeListener 메서드는 왜 있는 것이고 어떤 기능을 하는 메서드일까? 우선 setOnCheckedChangeListener 메서드는 체크박스를 클릭 할 때도 작동한다 그렇기에 어찌보면 setOnClickListener와 동일한다고 볼 수도 있지만
setOnCheckedChangeListener는 정확히는 해당 체크박스에서 “체크 값이” 변할 때 실행되는 메서드이다
결론
- setOnCheckedChangeListener는 체크 값이 변할 때 실행되는 메서드이다
- setOnClickListener는 체크박스를 클릭 할 때 실행되는 메서드이다
위 차이가 크지 않다고 생각할 수도 있지만 막 사용했다가는 내가 원래 구현하는 목적과 다르게 만들어질 수도 있기에 차이를 알아두는 것이 좋겠다