Home 안드로이드 체크박스 체크 메서드의 차이점 setOnCheckedChangeListener vs setOnClickListener
Post
Cancel

안드로이드 체크박스 체크 메서드의 차이점 setOnCheckedChangeListener vs setOnClickListener

안드로이드 체크박스 체크 메서드의 차이점 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는 체크박스를 클릭 할 때 실행되는 메서드이다

위 차이가 크지 않다고 생각할 수도 있지만 막 사용했다가는 내가 원래 구현하는 목적과 다르게 만들어질 수도 있기에 차이를 알아두는 것이 좋겠다

This post is licensed under CC BY 4.0 by the author.