ANDROID/UI - UX

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

언제나중수 2019. 11. 13. 12:11

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