RecyclerView 不是可以通过viewholder的来添加点击事件吗?为什么还要用接口回调
直接在myViewHolder.mItenView.setOnClickListenner的点击事件也可以完成对于item的点击监听呀
正在回答 回答被采纳积分+1
对于 RecyclerViewAdapter 来说 ,它本身没有提供ItemClick事件的监听,所以说我们只能通过ItemView他的setOnClickListener方法来监听事件的点击。那么我们要实现这个功能是有两种方式:
1)直接监听ItemView的点击事件,不去回调接口这种方式是可以实现想要的功能的。这种方式是可以实现的。但是我们要知道,用户的本次点击,并不是意图点击布局的视图,而是点击列表中的一个Item。那么放到程序中,我们就需要知道,我们的adapter需要拥有什么样的约束和一个能力,也就是对于组件或者类的封装,他应该需要拥有什么样的约束和能力。这样就引出了第二个方式,item 的点击事件回调监听是不是 adapter 本身应该拥有的一个能力?可以回想一下 ListView , 我们一样可以在 ItemView 上实现点击事件监听,但是却依然提供了 setItemClickListener 的方法,也就是说 ,对于google 来说 ,他会认为 , ListView 本身应该具有 监听ItemClick 的能力。
2)在 adapter 上去监听 ItemView 并且提供一种回调接口 来回调Item 点击方法,使 itemClick 变成 adapter 的一种能力 。 我们要知道,adapter 本身处理的事件可能会非常复杂,并不会简简单单的去打印一个 toast , 并且 在很多情况下 , adapter 本身具备复用的能力 。 那么 这种方式的实现,将使得 adapter 的能力更加的纯粹 , 不牵扯太多的额外逻辑 , 对于 设计模式的实现会非常有效 。 这也是 目前大家普遍推荐的一种写法 。
- 参与学习 人
- 提交作业 220 份
- 解答问题 1800 个
本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星