RecyclerView item监听探究

本文详细介绍了如何在RecyclerView中为Item添加点击监听。通过设置item布局的clickable属性为true,并在Adapter中定义回调接口,将监听事件回调到Activity。讨论了在需要同时显示背景颜色和selector效果时,如何正确设置监听。总结指出,通常使用itemView设置监听,但在遇到特定冲突时,应采用其他方法。
今天把我学习到的关于 RecyclerView  Item的点击监听的方法分享给大家。
本次内容只讨论RecyclerView的监听怎么添加。关于下拉刷新下拉加载更多,请参见这篇博客
网盘demo下载地址:http://pan.baidu.com/s/1dEs2vqL
那么
如何更加专业,简单的给RecyclerView的item添加监听呢?
这里我们主要关注Item布局和Adapter里面的监听设置,其余代码这里不做讨论。(最后留有demo下载)

item布局首先,根布局一定要设置clickable=“true”
然后在Adapter中,先定义好一个回调接口, 便于把监听时间的逻辑代码回调到Activity层或其他层。
接下来就是写监听的代码了。用itemView.setOnClickListener();
然后Activity中代码如下:
运行成功。

接下来我们考虑,如果我希望根布局既有一个白色背景,还有一个selector的背景呢,那么此时,就要嵌入两个线性布局。

但是我们发现,虽然可以监听。但是 那个selector效果并没有出现。所以,此时我们不能用itemView来设置监听,而是给selector的那个LinearLayout加监听。
测试情况如下:

总结: 一般来说,RecyclerView加监听,首先想到itemView那种方式加,除非发生什么冲突了。才选用第二种。


Android中,Kotlin中的RecyclerView是一个用于显示列表数据的组件。当用户滚动或点击RecyclerView中的条目时,通常需要对这些事件进行监听以便处理相应的业务逻辑。以下是监听RecyclerView Item的方法: 1. **设置OnItemClickListener**: 使用`onItemClickListener`属性可以监听单击事件。首先,在Adapter里添加一个接口: ```kotlin interface OnItemClickListener { fun onItemClick(position: Int) } ``` 然后,在Adapter初始化时绑定到Viewholder: ```kotlin class YourAdapter(private val listener: OnItemClickListener) : RecyclerView.Adapter<YourViewHolder>() { override fun onBindViewHolder(holder: YourViewHolder, position: Int) { holder.itemView.setOnClickListener { // 当item被点击 listener.onItemClick(position) } } //... } ``` 2. **使用Kotlin扩展函数**: Kotlin提供了一种简洁的方式来简化监听操作,你可以创建一个扩展函数为RecyclerView添加点击事件: ```kotlin fun RecyclerView.itemClickHandler(callback: (Int) -> Unit): RecyclerView.OnItemTouchListener { return object : RecyclerView.OnItemTouchListener { override fun onInterceptTouchEvent(parent: RecyclerView, e: MotionEvent): Boolean { return when (e.actionMasked) { MotionEvent.ACTION_DOWN -> true else -> false } } override fun onTouchEvent(parent: RecyclerView, e: MotionEvent): Boolean { val clickedPosition = parent.pointToPosition(e.x, e.y) if (clickedPosition != RecyclerView.NO_POSITION) { callback(clickedPosition) } return false } } } // 在Adapter中使用这个扩展函数 yourRecyclerView.apply { itemClickHandler { position -> // 处理点击事件 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值