首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rx-android处理回收视图项目单击的最佳方法

使用rx-android处理回收视图项目单击的最佳方法
EN

Stack Overflow用户
提问于 2016-06-09 03:44:49
回答 1查看 1.6K关注 0票数 1

我的回收视图上有这样的场景:

一旦我从我的回收视图中单击一个项目,我想显示该项目的详细信息到另一个活动(例如DetailsActivity),同时,利用新的活动视图转换(API 21)上的回收服务。

通过在recyclerAdapter上的视图上逐项单击侦听器找到了一些方法,但我不太确定由此可能产生的性能问题。

当然,我们可以通过意图包/parcelables将驻留在回收视图项目中的数据模型传递给活动,但是,我完全不知道如何在RxJava/RxAndroid中使用它。我曾经使用过绿色机器人的事件总线,但是既然我使用了RxJava并进行了改造,那么我也可以使用它。

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-13 17:09:37

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

步骤1使用RX实现您自己的简单事件总线

您可以访问这个站点- weddingpartyapp.com,这是Kaushik编写的一个很好的教程,可以使用RxAndroid创建一个简单但高效的EventBus。

或者您可以只使用这里的代码(这是我一年前开始的一个废弃项目,但有一个工作的EventBus并回答了您的问题)。

步骤2在您实现EventBus之后,您必须为您想要在总线上传递的所有手势创建对象(点击、双击、长按等等)

看看这段代码,并实现所有需要代码的对象。

步骤3将此代码添加到您的RecyclerView.OnItemTouchListener实现中,如果您已经复制了我的代码,应该-

代码语言:javascript
复制
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不再可用。请使用链接从返回机器的方式为本教程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37716396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档