Post

onClick in XML vs. onClickListener

퍼포먼스는 둘 다 같다. 코드가 길지 않다면 onClick을 사용하는 방식이, 코드가 길어진다면 onClickListener를 사용하는 방식이 괜찮아 보인다.

onClick in XML의 장점 ( API 4 부터 사용 가능 )
  • onClickListener()를 지정하는 방식은 inflate또는 kt findViewById()로 View를 불러와야 하기 때문에 후자의 경우 리스너를 지정할 View 마다 id를 지정해주어야 하지만 onClick=은 id를 지정할 필요가 없다.
  • C#에서 리소스의 Event를 지정할 때 사용하는 방식도 이런 식이다.
1
2
3
4
<ImageButton
android:id="@+id/del\_item"
android:onClick="onClickDelete"/>

1
2
3
fun onClickDelete(v: View) {
}

onClickListener의 장점
  • onClickListener()는 behavior 코드와 View를 따로 작성하기 때문에 코드가 복잡해지는 경우 가독성과 유지보수에 유리하다.(★ JS에서 addEventHandler()를 쓰느냐 HTML에 onClick을 지정하느냐에서 전자가 더 좋은 방법인 것과 같은 맥락.)
  • onClickListener는 interface이기 때문에, 이를 구현하는 클래스에서 instance variable이나 method를 만들어 사용하도록 할 수 있다.
1
2
3
4
5
val btn = findViewById(R.id.del\_item) as ImageButton
btn.setOnClickListener {
v -> onClickDelete(v)
}

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