【问题标题】:Best way to handle recyclerview item clicks using rx-android使用 rx-android 处理 recyclerview 项目点击的最佳方法
【发布时间】:2016-06-09 03:44:49
【问题描述】:

我的 recyclerview 物品上有这个场景:

一旦我从我的 recyclerview 中单击一个项目,我想将该项目的详细信息显示给另一个活动(比如 DetailsActivity),同时,利用该 recyclerviewitem 上的视图的新活动转换(API 21) .

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

当然,我们可以通过 Intent bundles/parcelables 将驻留在该 recyclerview 项目中的数据模型传递给活动,但是,我完全不知道如何将它与 RxJava/RxAndroid 一起使用。我使用了 GreenRobot 的事件总线,但由于我使用 RxJava 进行改造,所以不妨使用它。

有人能指出正确的方向吗?

谢谢。

【问题讨论】:

    标签: rx-java android-recyclerview rx-android


    【解决方案1】:

    我以前做过,应该警告你,这听起来并不容易

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

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

    第 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());
            }
        });
    }
    


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

    希望有所帮助!

    编辑
    www.weddingpartyapp.com 不再可用。请使用 Way Back Machine 中的 this 链接获取教程。

    【讨论】:

    • 嗨,伙计!感谢这个解决方案。快速提问: BusEvents.RecyclerViewItemClick() 将包含什么?你自己的 onclick 函数集??
    • 另外,如果我的理解是正确的,您还利用总线作为被点击位置的数组映射存储?
    • 总线事件类只是所有可能发生的事件的包装类(有点),每个事件只是一个空对象。您只需在公共汽车上用字符串传递空对象。例如:点击位置 5 将成为总线中的条目,作为 并与 BusEvents.RecyclerViewItemClick 的对象一起发布。所以所有订阅 BusEvents.RecyclerViewItemClick 的人都会得到 对。希望对您有所帮助!
    • 嗨@hello_world,无法访问weddingpartyapp.com,你能分享另一个教程或代码吗?
    • @Cüneyt 该网站存档于The Wayback Machine here
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多