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

时间:2016-06-09 03:44:49

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

我在我的recyclerview项目上有这个场景:

一旦我点击了我的recyclerview中的一个项目,我想向另一个活动(比如DetailsActivity)显示该项目的详细信息,同时利用该recyclelerviewitem上的新活动视图转换(API 21)

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

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

第1步使用RX实现您自己的简单事件总线您可以访问此站点 - weddingpartyapp.com这是Kaushik Gopal创建简单的精彩教程但使用RxAndroid的高效Eve​​ntBus。
或者你可以使用我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链接获取教程。