CheckBox check = findViewById(R.id.check);
imageView image = findViewById(R.id.image);
check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
image.setVisibility(View.VISIBLE);
} else {
image.setVisibility(View.GONE);
}
}
});
binding.check.setOnCheckedChangeListener { buttonView, isChecked ->
binding.image.visibility = if(isChecked).View.VISIBLE else View.GONE
}
코틀린 코드의 경우 viewBinding 속성을 활용했다.
그래서 findViewById 를 사용하지 않으니 코드도 간결해지고 성능도 좋아졌다.
자바코드는 메서드를 쓰려면 클래스 객체를 호출해야 하니까 코드가 어마어마하게 늘어난다. new CompoundButton.OnCheckedChangeListener() 이 부분.
if 조건문을 사용해야 하기 때문에 자바는 람다식 표현도 사용할 수 없었다. 자바의 람다식 다음에는 실행문이 와야 하니까. 그래서 매개변수와 클래스 내 조건문까지 다 달아주느라 코드 길이가 매우 길어졌다. (맞나? 사실 이 이유때문에 람다식을 못 쓴건지는 모르겠다 헤헤)
아무튼 같은 기능의 코드라도 코틀린으로 표현했을 때 코드 길이가 매우 짧아진다는 점. 코틀린 짱.