hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (151)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (6)
      • 공부 (1)
      • Spring (5)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s

개발로그

[Android] Recyclerview item Click / Click Listener 등록하는 법
Android/공부

[Android] Recyclerview item Click / Click Listener 등록하는 법

2022. 11. 1. 11:23
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 하기에 좀 더 자유롭게 사용 할 수 있는거같다.

참고: https://mechacat.tistory.com/7

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
'Android/공부' 카테고리의 다른 글
  • [Android] Intent 정리하기
  • [Android] Retrofit2 싱글톤패턴 적용하기
  • [Android] RecyclerView란? / RecyclerView Adapter 사용법
  • [Android] RecyclerView 데이터 추가/삭제/수정 반영 방법
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바