// 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
}
}