개발 노트/Kotlin
RecyclerView 클릭 이벤트 처리
juwon2
2024. 2. 21. 01:58
리사이클러뷰 아이템을 클릭하는 과정을하는 도중에 조금 헤맸었는데 다음번에는 그러지 않도록 기록을 해두려한다
먼저 어뎁터에 아래 코드를 작성해준다
외부에서도 아이템클릭 코드를 작성해줄수있게 하기 위함이다
일단 내가 지금 짜는 코드는 리사이클러뷰 아이템을 클릭한 값의 위치를 받아와야되기때문에 position : Int 를 추가해준다
// 아이템 클릭시 필요한 코드 (Fragment에서[외부에서] 아이템클릭 코드 작성해줄수있도록)
interface MyItemClickListener{
fun onItemClick(position: Int)
}
private lateinit var mItemClickListener : MyItemClickListener
fun setMyItemClickListner(itemClickListener: MyItemClickListener){
mItemClickListener = itemClickListener
}
...
CommunityRVAdapter.kt
onBindViewHolder에서 리사이클러뷰 아이템 클릭시, mItemClickListener.onItemClick(position) 이라고 작성해준다
// 데이터 연결
override fun onBindViewHolder(holder: CommunityRVAdapter.ViewHolder, position: Int) {
// 리사이클러뷰 아이템 클릭시
holder.bindItems(boardList[position])
holder.itemView.setOnClickListener {
mItemClickListener.onItemClick(position)
}
}
CommunityRVAdapter.kt
Fragment로 돌아와서 리사이클러뷰 아이템 클릭시 작동할 코드를 작성해주는데 여기 onItemClick 함수에 position : Int를 추가해줘야한다. BoardInsideActivity로 이동할때 클릭한 키값의 위치를 putExtra를 통해, position을 사용하여 넘겨주어야하기 때문이다
// 리사이클러뷰 아이템 클릭시
boardRVAdapter.setMyItemClickListner(object : CommunityRVAdapter.MyItemClickListener{
override fun onItemClick(position : Int) {
// BoadInSideActivity로 이동
val intent = Intent(context, BoardInsideActiviy::class.java)
// key값 넘겨줌(content,time,title,uid값)
intent.putExtra("key", boardKeyList[position])
startActivity(intent)
}
})
CommunityFragment.kt