728x90
반응형
Recyclerview item Click / Click Listener 등록하는 법
RecyclerView의 클릭이벤트는 onBindViewHolder 함수에서 setOnClickListener를 통해서도 구현할 수 있고, 외부에서 click 이벤트를 정의하고싶다면 리스너 인터페이스를 만들 수도 있다.
이 게시물에서는 외부에서 item click시 발생되는 이벤트를 정의하기 위해 리스너 인터페이스를 만드는 방법을 알아보고자 한다.
리스너를 만들면서도 리스너에 대해 잘 모르는거같아서 찾아보았다.
Listener란?
- 리스너는 특정 이벤트를 처리하는 인터페이스로 추상메서드를 받아 실행하며 이벤트 핸들러라고도 불린다.
RVAdapter에서 Click Listener 만드는 법:
1️⃣ interface를 만든다.
interface OnItemClickListener{
fun onClick(v:View,position:Int)
} //onClick 함수는 클릭시 발생시킬 이벤트를 작성하는 함수로 외부에서 오버라이드 해줘야하는 함수이다.
2️⃣ 사용자가 정의한 listener를 받아올 변수를 만든다.
private lateinit var itemClickListener : OnItemClickListener
3️⃣ 사용자가 정의한 listener를 변수에 set 하는 함수를 만든다.
fun setItemClickListener(onItemClickListener: OnItemClickListener)
{
this.itemClickListener = onItemClickListener
}
- 이렇게 3단계를 거치면 RVAdapter에서는 준비가 완료되었다. 이제 RV를 띄우는 Class에서 클릭시 나타날 이벤트를 onClick 함수로 오버라이드 해주면된다.
RV 있는 Activity Class 에서 listener set하기:
- 해당 RVAdapter에 set할 listener 매개변수를 익명함수의 형태로 나타낸다.
//중략
binding.rvMemo.adapter = dataRVAdapter.apply{
this.setItemClickListener(object: MemoRVAdapter.OnItemClickListener{
override fun onClick(v: View, position: Int) {
Log.e("summer","onClick함수 진입")
// 이 부분에 클릭시 발생될 이벤트를 작성하면된다.
}
})
}
- 이렇게하면 외부에서 RV item에 대한 click 이벤트를 처리할 수 있다!
- interface를 만들어 직접 함수를 override 하기에 좀 더 자유롭게 사용 할 수 있는거같다.
728x90
반응형
'Android > 공부' 카테고리의 다른 글
[Android] Intent 정리하기 (0) | 2023.04.26 |
---|---|
[Android] Retrofit2 싱글톤패턴 적용하기 (0) | 2022.11.26 |
[Android] RecyclerView란? / RecyclerView Adapter 사용법 (0) | 2022.10.26 |
[Android] RecyclerView 데이터 추가/삭제/수정 반영 방법 (0) | 2022.10.26 |
[Android] 안드로이드 기본 dialog 생성하기 (0) | 2022.10.25 |