如何使用 RxJava 处理回收器视图的项目点击

2024-02-11

我有兴趣找出响应回收器视图的项目点击的最佳方式是什么。

通常,我会向 ViewHolder 添加一个 onclick() 侦听器,并通过接口将结果传回活动/片段。

我考虑过在 onBindViewHolder 中添加一个 Observable,但我不想为每个项目绑定创建一个新的 Observable。


您可以使用接收绑定 https://github.com/JakeWharton/RxBinding然后在适配器内部创建一个主题,然后将所有事件重定向到该主题,并创建主题的 getter 来充当可观察的对象,最后只需订阅该可观察的对象。

private PublishSubject<View> mViewClickSubject = PublishSubject.create();

public Observable<View> getViewClickedObservable() {
    return mViewClickSubject.asObservable();
}

@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup pParent, int pViewType) {
    Context context = pParent.getContext();
    View view = (View) LayoutInflater.from(context).inflate(R.layout.your_item_layout, pParent, false);
    ViewHolder viewHolder = new ViewHolder(view);

    RxView.clicks(view)
            .takeUntil(RxView.detaches(pParent))
            .map(aVoid -> view)
            .subscribe(mViewClickSubject);

    return viewHolder;
}

一个用法示例可以是:

mMyAdapter.getViewClickedObservable()
        .subscribe(view -> /* do the action. */);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 RxJava 处理回收器视图的项目点击 的相关文章

随机推荐

  • 包含子字符串列表中精确子字符串的字符串

    Scala 初学者在这里 我试图找到所有推文文本中至少包含关键字列表中的一个关键字 given 其中一条推文 case class Tweet user String text String retweets Int 举个例子Tweet u
  • 我如何在我的 Angular 2 项目中使用 daterangepicker js?

    我正在 Angular 2 项目中工作 想要集成 daterangepicker js 库来弹出日期范围选择器 如果您之前没有听说过 这里链接到图书馆http www daterangepicker com http www dateran
  • Redux Toolkit - 我无法更新 Slice 状态?

    我想更新状态并尝试了几种方法来做到这一点 但我不能 首先 我得到了一个problem https stackoverflow com questions 65764486 why reducer function return only p
  • SQL使用触发器进行约束

    我正在研究触发因素和约束因素 我有一个使用触发器的问题 说实话 我不太确定如何使用触发器 假设我们有一个教师表 这个教师表包含teacher id ssn first name last name class time 例如 teacher
  • R 使用 diff:二元运算符错误的非数字参数

    我们使用以下命令解析包含一些数字的 CSV 文件 tt lt read table test2 csv sep stringsAsFactors FALSE 它有效 印刷tt 1 产生一个很好的向量并且sd tt 1 是明智的 然而 当我们
  • 如何在 OpenCL 中验证波前/扭曲大小?

    我使用的是 AMD Radeon HD 7700 GPU 我想使用以下内核来验证波前尺寸是否为 64 kernel void kernel test warpsize global T dataSet uint size size t id
  • Twitter Bootstrap 中的数据切换属性

    什么是data toggleTwitter Bootstrap 中的属性有什么作用 我在 Bootstrap API 中找不到答案 我之前也看到过类似的问题 link https stackoverflow com questions 10
  • BigQuery:联合两个基于联合 Google 电子表格的不同表

    我有两个不同的 Google 电子表格 1 个有 4 列 Col1 Col2 Col5 Col6 ID1 A B C ID2 D E F 其中包含前一个文件的 4 列 以及另外 2 列 Col1 Col2 Col3 Col4 Col5 Co
  • 方案相当于元组拆包是什么?

    在Python中 我可以做这样的事情 t 1 2 a b t a 将是 1 b 将是 2 假设我有一个列表 1 2 在方案中 有什么办法可以做类似的事情let 如果有什么区别的话 我会使用 Racket 在球拍中你可以使用match htt
  • 我必须以哪种格式将参数传递给 Project.ImportDirectory(...)?

    我已设法通过自动化 API 打开我的 EA 项目 但不知道将参数传递给的正确格式ImportDirectory method var repo new EA RepositoryClass repo OpenFile some eap va
  • 是否应该在每个事务上创建 EF dbContext

    我正在尝试找出管理 DbContext 的最佳方法 我见过不进行处置的代码示例 并且我见过人们说这是一个坏主意 我做下面这样的事情合适吗 另外 我应该将每个事务 包括读取 放在新的 DbContext 中吗 这可能是另一个问题 但是关于 E
  • 一次更改工作表中的多个命名单元格和范围

    我想在工作表中更改很多 Excel 名称 200 名称就像 comp 我想在 cons 中更改它 所以每次的变化都是一样的 有没有办法一次性完成这一切 我知道对于函数来说 使用 control h 很简单 然后用 cons 替换 comp
  • C#/CLI 标识符的最大长度是多少?

    名称还有哪些其他限制 除了范围内明显的唯一性之外 这些是在哪里定义的 除了其他答案之外 Microsoft Visual C 编译器接受的最大标识符长度是511 个字符 可以使用以下代码进行测试 class Program private
  • android:验证意图发送者的身份

    我在一家生产多个应用程序的公司工作 并非所有这些应用程序都具有相同的签名或更像我们暂时至少有 5 6 个应用程序证书 我们试图创建一种机制 使同一设备上的所有公司应用程序共享相同的内容 例如 如果用户从市场安装应用程序A并且没有安装应用程序
  • 运行时错误“1004”:范围类的选择方法失败 VBA 2003

    我正在尝试将一列从一张纸复制到另一张纸上 我使用的代码是一个录制的宏 在我将其连接到按钮之前它工作正常 当我这样做时 它给出了 运行时错误 1004 范围类的选择方法失败 这是代码 我看不出它有什么问题 当我点击调试时 它突出显示第二行 S
  • SQL查询同时获取分组依据和不同值

    我在尝试定义此表的 SQL 查询时遇到问题 有一张患者表及其访问时记录的体重读数 其中包含以下列 患者ID 体重读数 访问 ID 每次访问一个 换句话说 如果两个记录中的两个访问 ID 相同 则在同一访问日期获取了两个体重读数 我有这样的查
  • 将 Django 应用程序部署到 AWS ElasticBeanstalk

    我正在尝试将 django 应用程序部署到 AWS ElasticBeanstalk 我正在一台 Linux 机器上工作 一切都很顺利 但部署完成后我收到 502 网关错误 通过深入搜索 我发现有类似问题的人创建了 Procfile 到项目
  • 在不违反标准的情况下使用指向结构的指针对数组进行别名

    Reading this http cellperformance beyond3d com articles 2006 06 understanding strict aliasing html我理解 如果结构具有兼容的成员 则可以为结构
  • 使用 jQuery 查找选定控件或文本框的标签

    我想要一些 jQuery 代码 当我单击文本框时 它可以让我找到控件的标签 所以在我的 HTML 中我有这个
  • 如何使用 RxJava 处理回收器视图的项目点击

    我有兴趣找出响应回收器视图的项目点击的最佳方式是什么 通常 我会向 ViewHolder 添加一个 onclick 侦听器 并通过接口将结果传回活动 片段 我考虑过在 onBindViewHolder 中添加一个 Observable 但我