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
'ANDROID > UI - UX' 카테고리의 다른 글
[안드로이드/MpAndroidChart] MpAndroidChart에서 Marker 커스텀하기 (0) | 2020.02.25 |
---|---|
[안드로이드] ConstraintLayout + CollapsingToolbarLayout 활용해 접히는 TabBar 구현하기 (0) | 2020.01.29 |
[안드로이드 | 코틀린] 사용자 정의 커스텀 달력 만들고 ViewPager에 접목하기 (0) | 2019.11.04 |
[안드로이드 | MpAndroidChart] 바 그래프의 하단 영역이 생길 때의 대처법 (0) | 2019.10.30 |
[안드로이드 | 코틀린] 데이터바인딩을 사용할 때 Fragment 내의 View 좌표 가져오기 (0) | 2019.10.28 |