how to programatically click on recyclerview item kotlin

// Assuming you have a RecyclerView named recyclerView

// Set an item click listener for the RecyclerView
recyclerView.addOnItemTouchListener(
    RecyclerItemClickListener(
        context,
        recyclerView,
        object : RecyclerItemClickListener.OnItemClickListener {
            override fun onItemClick(view: View, position: Int) {
                // Perform the click action programmatically
                recyclerView.findViewHolderForAdapterPosition(position)?.itemView?.performClick()
            }

            override fun onLongItemClick(view: View, position: Int) {
                // Handle long item clicks if needed
            }
        }
    )
)

// RecyclerItemClickListener class for handling item clicks
class RecyclerItemClickListener(
    context: Context,
    recyclerView: RecyclerView,
    private val mListener: OnItemClickListener?
) : RecyclerView.SimpleOnItemTouchListener() {

    interface OnItemClickListener {
        fun onItemClick(view: View, position: Int)
        fun onLongItemClick(view: View, position: Int)
    }

    private val mGestureDetector: GestureDetector

    init {
        mGestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
            override fun onSingleTapUp(e: MotionEvent): Boolean {
                return true
            }

            override fun onLongPress(e: MotionEvent) {
                val childView = recyclerView.findChildViewUnder(e.x, e.y)
                if (childView != null && mListener != null) {
                    mListener.onLongItemClick(childView, recyclerView.getChildAdapterPosition(childView))
                }
            }
        })
    }

    override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
        val childView = rv.findChildViewUnder(e.x, e.y)
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, rv.getChildAdapterPosition(childView))
            return true
        }
        return false
    }
}