프래그먼트 내에 있는 리사이클러뷰에서 아이템을 선택했을시 선택된 아이템의 상세정보를 보여주고 싶음.
클릭시 데이터정보와 함께 상세정보 프래그먼트로 이동시켜야됨
리사이클러뷰 아이템 클릭 이벤트
이전 글에선 리사이클러뷰를 기본 사용법과 예제를 살펴봤습니다. 이제 리사이클러뷰 아이템 클릭 이벤트를 처리하는 방법을 알아보겠습니다. 리스트뷰를 써본 경험이 있다면 리스트뷰의 아이
velog.io
아주 자세하게 잘 나와있음.
1.아답터 클래스에 먼저 커스텀 리스터 인터페이스, 저장변수와 함수 만듦
//custom listener
interface onItemClickListener {
fun onItemClick(view : View, position: Int)
}
//객체 저장 변수
private lateinit var mOnItemClickListener: onItemClickListener
//객체 전달 메서드
fun setOnItemClickListener(onItemClickListener: onItemClickListener){
mOnItemClickListener = onItemClickListener
}
2. 뷰홀더 클래스 안에서 커스텀 리스너 호출
inner class MyViewHolder (binding : RvItemActivitiesBinding) : RecyclerView.ViewHolder(binding.root){
val title = binding.activitiesTitle
// 아이템 클릭시 커스텀 리스너 이벤트 호출
init{
itemView.setOnClickListener {
val pos = adapterPosition
if (pos != RecyclerView.NO_POSITION && mOnItemClickListener != null){
mOnItemClickListener.onItemClick(itemView,pos)
}
}
}
}
3. fragment 에서 아답터 설정할때 아답터에 온클릭리스너 셋해줌
adapter = ActivitiesRvAdapter(runsList)
binding.activitiesRv.adapter = adapter
adapter.setOnItemClickListener(object : ActivitiesRvAdapter.onItemClickListener{
override fun onItemClick(view: View, position: Int) {
println("breakPoint : item clicked. pos : $position")
}
})
아주 잘 나온걸 확인함.
온클릭 안에 프래그먼트를 이동시킬 코드 작성
override fun onItemClick(view: View, position: Int) {
val transaction = requireActivity().supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_container,secondFragment())
transaction.commit()
}
argument 와 같이 넘기고 싶으면
//넘길 arguments 를 fragment 로 저장
val bundle = Bundle()
bundle.putInt("position",position)
val singleFrag = ActivityFragment()
singleFrag.arguments = bundle
//fragment로 이동
val transaction = requireActivity().supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_container,singleFrag)
transaction.addToBackStack(tag)
transaction.commit()
addToBackStack 은 넘어가는 프래그먼트에서 뒤로가기버튼을 눌렀을때 현재 리사이클러가 돌아가고 있는 프래그먼트로 다시 돌아오게 하도록 현재 프래그먼트를 스택에 추가하는것.
'Android > UI' 카테고리의 다른 글
Android/ LinearLayout (1) | 2024.03.12 |
---|---|
Android / Kotlin AlertDialog custom Layout List 다이얼로그 커스텀 레이아웃 (0) | 2023.09.25 |
Android/Kotlin RecyclerView swipe 지우기. Drag로 위치 변경 (0) | 2023.09.04 |
Android/Kotlin RecyclerView - 아이템 선택시 하이라이트 (0) | 2023.09.01 |
Android/Kotlin RecyclerView (0) | 2023.08.13 |