使用BRVAH通过setOnItemClickListener设置点击item无效问题

最近做新项目,我导入了BRVAH做recyclerview的控制,发现官方已经更新到4.0版本了,这里我按照接入文档配置

https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki

implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4"

我在使用setOnItemClickListener 时发现recyclerview的item点击事件时而有效时而无效,也就是说我通过setOnItemClickListener的点击事件时而能触发时而不能触发
我通过点击源码进去看它的实现


image.png

可以看到它内部也是监听itemview的点击,那么是不是因为我的itemview(也就是自定义布局的根view)没有收到点击事件,被其子view所处理了呢?
带着这样的猜测,我对我自己的布局进行了处理尝试


image.png

左边是修改前的代码,右边是修改后的代码,可以看到我们将子view设置为不可获取焦点,让父view即布局的最顶层viewgroup设置为可以获取焦点,保证子view不会去抢走焦点消费事件,问题就得到解决了

需要注意的是ViewGroup默认是不可以获取焦点的

到这里,问题已经解决了。但是这里还有一点疑问,就是为什么修改前是偶尔失效偶尔有效呢?如果事件被子view消费处理了,那按理说应该都失效的。暂时没想明白,欢迎同学讨论指点

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容