퍼포먼스는 둘 다 같다.

코드가 길지 않다면 onClick을 사용하는 방식이,

코드가 길어진다면 onClickListener를 사용하는 방식이 괜찮아 보인다.


onClick in XML의 장점 ( API 4 부터 사용 가능 )

  • ``kt onClickListener()``를 지정하는 방식은 ``kt inflate`` 또는 ``kt findViewById()``로 View를 불러와야 하기 때문에 후자의 경우 리스너를 지정할 View 마다 id를 지정해주어야 하지만 ``kt onClick=``은 id를 지정할 필요가 없다.
  • C#에서 리소스의 Event를 지정할 때 사용하는 방식도 이런 식이다.

```xml

<ImageButton 

             android:id="@+id/del_item"

             android:onClick="onClickDelete"/>

```

```kt

fun onClickDelete(v: View) {

}

```


onClickListener의 장점

  • ``kt onClickListener()``는 behavior 코드와 View를 따로 작성하기 때문에 코드가 복잡해지는 경우 가독성과 유지보수에 유리하다.(★ JS에서 addEventHandler()를 쓰느냐 HTML에 onClick을 지정하느냐에서 전자가 더 좋은 방법인 것과 같은 맥락.)
  • ``kt onClickListener``는 interface이기 때문에, 이를 구현하는 클래스에서 instance variable이나 method를 만들어 사용하도록 할 수 있다.

```kt

val btn = findViewById(R.id.del_item) as ImageButton

btn.setOnClickListener {

    v -> onClickDelete(v)

}

```