[kotlin] 리사이클러뷰 아이템 클릭 이벤트 처리하기

리사이클러뷰에서 아이템을 클릭했을 때 해당 이벤트를 처리하려면 RecyclerViewOnItemClickListener를 구현해야 합니다.

1. 리사이클러뷰 어댑터(Adapter)에서 인터페이스 정의하기

interface OnItemClickListener {
    fun onItemClick(position: Int)
}

위와 같이 인터페이스를 정의하여, 아이템 클릭 이벤트를 처리할 수 있는 콜백 메서드를 선언합니다.

2. 어댑터에서 인터페이스 구현하기

리사이클러뷰 어댑터에서 위에서 정의한 OnItemClickListener을 구현합니다.

class MyAdapter(private val itemClickListener: OnItemClickListener) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    // ...

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        // ...

        holder.itemView.setOnClickListener {
            itemClickListener.onItemClick(position)
        }
    }
}

onBindViewHolder에서 아이템 뷰에 클릭 리스너를 설정하여, 클릭 시에 정의한 콜백 메서드를 호출합니다.

3. 액티비티(Activity) 또는 프래그먼트(Fragment)에서 클릭 이벤트 처리하기

해당 어댑터를 사용하는 액티비티 또는 프래그먼트에서 클릭 이벤트를 처리합니다.

class MyActivity : AppCompatActivity(), OnItemClickListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        // ...

        val adapter = MyAdapter(this)
        recyclerView.adapter = adapter
    }

    override fun onItemClick(position: Int) {
        // 클릭한 아이템의 위치(position)에 따른 작업 수행
        Toast.makeText(this, "Clicked item at position $position", Toast.LENGTH_SHORT).show()
    }
}

위와 같이 액티비티나 프래그먼트에서 OnItemClickListener을 구현하고 해당 인터페이스의 메서드를 오버라이드하여 클릭 이벤트를 처리합니다.

이제 리사이클러뷰의 아이템 클릭 이벤트를 효과적으로 처리할 수 있습니다.

결론

리사이클러뷰에서 아이텤 클릭 이벤트를 처리하기 위해서는 인터페이스를 정의하고 어댑터에서 구현하며, 액티비티나 프래그먼트에서 해당 클릭 이벤트를 처리하는 방식을 사용합니다. 이를 통해 리사이클러뷰의 아이템 클릭 이벤트를 쉽게 처리할 수 있습니다.

參考文献: