버튼, 텍스트, 에디트 텍스트, 이미지 등 뷰들은 8-1 이벤트보단 별도 제공하는 이벤트를 사용함.
뷰의 이벤트를 처리하려면 이벤트 소스와 이벤트 핸들러 두 개를 활용해야 함.
1. 이벤트 소스: 이벤트가 발생한 객체
2. 이벤트 핸들러: 이벤트 발생 시 실행될 객체
+ 리스너: 소스와 핸들러를 연결하는 함수.
binding.checkbox1.setOnCheckedChangeListener(object: CompoundButton.OnCheckedChangeListener{ ... })
여기서 checkbox1가 이벤트 소스, obejct가 이벤트 핸들러라면 setOnChecked...가 리스너.
binding.checkBox1.setOnClickListener(object: CompoundButton.OnCheckedChangeListener,
View.OnClickListener {
override fun onClick(v: View?) {
TODO("Not yet implemented")
}
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
TODO("Not yet implemented")
}
})
예시.
이외에도 SAM 기법이나 뭐 많지만.. 겁나어렵네