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

Best way to handle recyclerview item clicks using rx-android

我的 recyclerview 物品上有这种情况:

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

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

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

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

谢谢。

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

第 1 步使用 RX 实现您自己的简单事件总线
您可以访问此站点 - weddingpartyapp.com This is a great tutorial by Kaushik Gopal to create a simple but efficient EventBus using RxAndroid.
or you can just use my code from 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());
        }
    });
}


否则就用你创建的任何方法做同样的事情

希望对您有所帮助!

编辑
weddingpartyapp.com 不再可用。请使用 Way Back Machine 中的 this link 作为教程。