binding.checkBox.setOnCheckedChangeListener(object:CompoundButton.OnCheckedChangeListener{
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
Log.d("lumine", "check changed")
}
})
(주로 사용하는 SAM 기법)
binding.checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
Log.d("lumine","check changed")
}
binding.checkBox.setOnLongClickListener {
Log.d("lumine", "long click")
true // 반환값 필요
}
binding.checkBox.setOnClickListener {
Log.d("lumine", "click")
}
binding.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
}
});
위 코드를 그대로 코틀린으로 전환
binding.checkBox.setOnClickListener(object: View.OnClickListener{
override fun onClick(v: View?) {
}
})
SAM 기법
binding.checkBox.setOnClickListener {
}
public interface JavaInterface1{
void callback();
}
public class SAMTest{
JavaInterface1 callback;
public void setInterface(JavaInterface1 callback){
this.callback = callback;
}
}
이를 그대로 코틀린에서 사용한다면 아래와 같이 사용해야한다.
obj.setInterface(object: JavaInterface1{
override fun callback() {
println("asdf")
}
})
하지만 위와 같이 callback()
을 포함하는 JavaInterface1
인터페이스가 있고, 여기에 setter 함수도 자바에 작성되어 있으면
코틀린에서 아래와 같이 람다함수를 통해 쉽게 사용할 수 있다.
obj.setInterface { println("asdf") }