RecyclerView 不是可以通过viewholder的来添加点击事件吗?为什么还要用接口回调

RecyclerView 不是可以通过viewholder的来添加点击事件吗?为什么还要用接口回调


直接在myViewHolder.mItenView.setOnClickListenner的点击事件也可以完成对于item的点击监听呀

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕雪 2019-12-28 13:36:22

http://img1.sycdn.imooc.com//climg/5e06e97f096ab93509210437.jpg

http://img1.sycdn.imooc.com//climg/5e06e9b309ca335d12830304.jpg

因为这里监听的就是整个Item。所以不管是点击的item中的哪个控件,都是可以响应的。如果解决了你的疑惑,请采纳,祝:学习愉快

啊哈哈略知一二 2019-05-29 19:45:33

我也是相同的疑问,直接使用view的setOnClickListener()感觉更简单呢

myViewHolder.mItemView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       Toast.makeText(mContext, "第" + position + "条数据被点击。",Toast.LENGTH_SHORT).show();
   }
});

  • 一个adapter可能会被多个activity中的控件去使用,为了更大限度的去复用,所以在控件的调用处去监听事件,而不是去adapter中处理,这样可以最大限度的降低耦合度
    2019-12-28 13:33:03
好帮手慕雪 2019-05-23 10:18:40

对于 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 的能力更加的纯粹 , 不牵扯太多的额外逻辑 , 对于 设计模式的实现会非常有效 。 这也是 目前大家普遍推荐的一种写法 。 


  • 用户的本次点击,并不是意图点击布局的视图,而是点击列表中的一个Item。这句神了
    2019-12-27 19:54:45
  • 我还有一个疑问,这个接口回调事件是在布局视图中的点击注册的,为什么不点图的时候也能完成整个item的点击事件呢
    2019-12-27 20:00:19
  • 补充一下,那个不点图的意思是不点击那个imageview,点他旁边的其它控件也一样可以完成接口的点击回调事件,这是为什么
    2019-12-27 20:01:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.Android 网络操作与流行框架
  • 参与学习           人
  • 提交作业       220    份
  • 解答问题       1800    个

本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师