[Android] 리사이클러뷰 아이템 클릭리스너 구현

berry·2021년 11월 21일
0

안드로이드

목록 보기
7/22

참고: https://sunpil.tistory.com/181 , 인프런 강의(mango_contents편)

1. 인터페이스 사용하기

<RVAdapter.kt>

class RVAdapter(val context: Context, val List: MutableList<ContentsModel>) :
    RecyclerView.Adapter<RVAdapter.ViewHolder>() {
  
  /*생략*/
  
    //1.클릭 인터페이스 정의
    interface ItemClick {
        fun onClick(view: View, position: Int)
    }

    //클릭 리스너 선언
    var itemClick: ItemClick? = null

    override fun onBindViewHolder(holder: RVAdapter.ViewHolder, position: Int) {
        if (itemClick != null) {
            holder?.itemView.setOnClickListener { v ->
   		 //2.아이템 클릭시 onClick 함수 실행됨
                itemClick!!.onClick(v, position)
            }
        }
        holder.bindItems(List[position])
    }

/*생략*/
  
}

1. 클릭 인터페이스(ItemClick)를 정의해준다.
2. item을 클릭했을 때 ItemClick 인터페이스 안의 onClick 함수(추상함수)가 실행되도록 한다. (itemView.setOnClickListener 이용해 구현)
(3. onClick 함수(추상함수)의 구현은 MainActivity에서 해준다.)


<MainActivity.kt>

 val recyclerview = findViewById<RecyclerView>(R.id.rv)
 val rvAdapter = RVAdapter(baseContext, items)
  
 //3. 인터페이스 구현
 //object를 이용해서 인터페이스 객체 생성
 rvAdapter.itemClick = object: RVAdapter.ItemClick{
	override fun onClick(view: View, position: Int) {
	  val intent = Intent(baseContext, ViewActivity::class.java)
	  intent.putExtra("url", items[position].url)
	  startActivity(intent)
	}

    }

3. onClick 함수(추상함수)의 구현은 MainActivity에서 해준다.

2. Adapter에서 직접 구현하기

(+참고)리사이클러뷰 아이템 클릭해서 인텐트로 값 넘겨주기

참고: https://yunaaaas.tistory.com/57

adapter에서 클릭리스너 구현해주는 방식

profile
공부 내용 기록

0개의 댓글

관련 채용 정보