본문 바로가기

ANDROID/UI - UX

[안드로이드] RecyclerView에서 클릭한 아이템의 position을 간단히 받아오기

RecyclerView의 아이템 클릭시에 해당 아이템의 position을 받아와야 하는 상황이 있었는데,

 

stack overflow에 나와있는 상당수 답변은 clickListener interface 따로 생성하고, 달아주는 등등

 

손이 가는것은 물론, 방식들도 굉장히 다양한 편이었다.

 

더 편한 길이 있을텐데(이거보단 덜 칠 수 있지 않을까) 싶은 마음에 둘러보다 좋은 솔루션을 찾았다.

 

 


< 솔루션 >

 

1. RecyclerView에 달려있는 어댑터의 onBindViewHolder 메소드에서 파라미터로 넘어오는 holder의 itemView에 onClickListner를 설정한다.

 

2. onClickListener에 클릭시마다 holder.adapterPosition을 통해 아이템의 position을 가져온다.

 

....

override fun onBindViewHolder(holder: ExerciseVo.ViewHolder, position: Int) {
   holder.from(itemList[position])
   
   // 아래가 터치 확인 및 position 확인을 위해 추가된 부분
   holder.itemView.setOnClickListener{
           Log.d("clickTest", "아이템 클릭 확인. position : ${holder.adapterPosition}")
   }
}

 

3. 결론 : 간단한 수준의 item postion만을 필요로 한다면 신규 listener interface 클래스? 새로운 파라미터? 리팩토링?

 

필요없어

 

 

 

< 참조 >

 

https://stackoverflow.com/questions/28296708/get-clicked-item-and-its-position-in-recyclerview 

 

Get clicked item and its position in RecyclerView

I am replacing my ListView with RecyclerView, list showing ok, but I would like to know how to get clicked item and its position, similar to the method OnItemClickListener.onItemClick(AdapterView p...

stackoverflow.com