본문 바로가기

~2023

[ANDROID] CheckBox >> onClickListener() 이벤트 리스너 설정

728x90
반응형

<실행 예시>

 

 


<풀이>

 

간단하게 체크박스 안 요소를 클릭시 Toast가 발생하도록 하는 클릭 이벤트 리스너 설정하는 방법에 대해 실습해봅시다.

두 가지 방법으로 수행했는데 (1) 익명 클래스로 처리, (2) 클래스 객체를 만들어 매개변수로 전달했습니다. 저는 (2) 방법을 통해 실행을 진행했습니다.  *(1) 방법은 코드 참고

기초적인 다른 문법들의 설명을 생략하고 이벤트 리스너에 대해 이야기해보도록 하겠습니다.

View.OnClickListener 클래스의 객체(CheckBoxClickListener(이하 mCBCL, 이하 클래스의 객체)) 하나를 준비해야 합니다. 

그리고 onClick() 메소드를 커스텀하면서 오버라이딩하면 됩니다.

여기서 가장 중요한 부분, checked 변수입니다.

checked 변수는 변수명에서 보시듯이 CheckBox의 체크 상태를 가져오는 변수입니다.

그런데 왜 ((CheckBox) view).isChecked();를 적었는지 궁금한 분이 많으실거라 봅니다.

왜냐하면 isChecked() 메소드는 CheckBox 클래스에 있는 메소드인데 onClick() 메소드는 View v라는 뷰 객체만 받습니다. 1차원적으로 생각하면 CheckBox 클래스의 객체가 없으니 isChecked()를 못 쓰겠구나... 겠지만, View 클래스는 모든 뷰의 최상위 클래스이기 때문에 (CheckBox)로 다운캐스팅해줘 isChecked() 메소드를 호출해오는 것입니다.

그럼 체크 상태까지 알았으니 switch()를 통해 클릭된 뷰를 확인하고 checked의 상태에 따라 Toast를 출력해주면 됩니다

 


<코드>

주석 처리 부분 -> 익명 클래스로 처리

실행 부분 -> 클래스 객체 만들어 매개변수로 전달

checked => 체크박스의 현재 체크 상태


activity_main.xml
MainActivity.java 1/2
MainActivity.java 2/2

 

 

 

 

 

728x90
반응형