当前位置: 首页 > 知识库问答 >
问题:

使用rx-android处理recyclerview项目点击的最佳方法

仲霍英
2023-03-14

我的recyclerview项目中有这样的场景:

一旦我从我的RecolyerView中单击了一个项目,我想要向另一个activity显示该项目的详细信息(比如DetailsActivity),同时利用该RecolyerViewItem上的视图(API21)的新activity转换。

通过在recyclerAdapter的视图上设置itemclick侦听器,我找到了一些方法,但我并不确定由此可能产生的性能问题。

当然,我们可以通过意图bundles/parcelables将位于RecolyerView项中的数据模型传递给activity,但是,我完全不知道如何在RxJava/RxAndroid中使用它。我已经使用了GreenRobot的事件总线,但由于im使用了RxJava并进行了改版,所以不妨使用它。

谁能给我指明正确的方向吗?

多谢了。

共有1个答案

公良骁
2023-03-14

我以前也这样做过,我要警告你,听起来并不容易

步骤1使用RX实现您自己的简单事件总线
您可以访问此站点-WeddingPartyApp.com这是由Kaushik Gopal编写的一个很棒的教程,用于使用RXAndroid创建一个简单但高效的事件总线。
或者您可以从这里使用我的代码(这是一个我一年前开始的废弃项目,但有一个工作的EventBus和您问题的答案)

步骤2实现EventBus之后,您必须为所有要在总线上传递的手势(轻击、双击、长按等)创建对象
看一下这段代码,并实现所有需要代码的对象

步骤3将此代码添加到RecyclerView的实现中。OnItemTouchListener如果您复制了我的代码,应该可以工作-

public RecyclerItemClickListener(Context c) {
    bus = ... //get instance of bus
    gestureDetector = new GestureDetector(c, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            bus.putValue(string, childPosition);
            bus.publish(new BusEvents.RecyclerViewItemClick());
            return true;
        }

        @Override
        public void onLongPress(MotionEvent e) {
            bus.publish(new BusEvents.TapEvent());
        }
    });
}


否则只对您创建的任何方法执行相同的操作

希望有帮助!

编辑
WeddingPartyApp.com不再可用。请使用此链接从返回机器的教程。

 类似资料:
  • 问题内容: 当您在Android应用中处理Firebase数据(读,写…)时,您需要获取Firebase引用才能进行数据处理。 由于Firebase引用是一棵JSON树,因此,如果您指向树的根,则可以随时访问子级,而无论深度如何。 问题:从内存和延迟角度来看,在代码中处理此引用的最佳方法是什么? 根 C1 C10 C11 C2 C21 1 /在应用程序的根目录中创建静态Firebase引用。 2

  • 因此,我有一个Javascript脚本,它在一个循环中将小的分数相加,它有可能将0.2加到0.1。然后,这个值被输入到另一个函数,但问题是,我需要0.3来精确输入,而不是0.3000000000000004。 什么是最简单的方法,以确保数字是正确和准确的。注意,它可能得到0.25+0.125等,被添加到简单的四舍五入到小数点1不会解决问题。 也有可能添加0.2+0.1000000000000000

  • 问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但

  • 问题内容: 我们在同一个SVN存储库中有一个包含两个子项目的项目。例如: 项目的构建应包括两个子项目的构建结果。为了使构建速度更快,我仅在分别更改了SVN的情况下(在svn:// ip / svn / trunk / subproject1中)才运行subproject1的构建。对于subproject2同样 最好的方法是什么?我可以做一份工作吗?在这种情况下,我应该如何定义构建触发器? 还是我需

  • 本文向大家介绍Android 使用SearchView过滤RecyclerView中的项目,包括了Android 使用SearchView过滤RecyclerView中的项目的使用技巧和注意事项,需要的朋友参考一下 示例 添加filter方法RecyclerView.Adapter: itemsCopy在适配器的构造函数中初始化。itemsCopy.addAll(items) 如果您这样做,只需f

  • 如果这个解决方案是错误的,如何处理这些点击和设置监听器? PS:请不要告诉我。