将 API 调用与 RX Java 相结合

2023-11-25

我是 RXJava 的新手,我无法理解如何将 API 调用的结果链接在一起。

我正在使用改造进行两个 API 调用,A 和 B,它们都返回一个可观察的对象列表。两个 API 调用都是独立的,因此我想同时进行这两个调用,但为了实现最终结果,我需要首先获取 A 的结果,做一些工作,然后将其与 B 的结果结合起来以填充我的列表适配器。

  • 进行 API 调用 A
  • 进行 API 调用 B
  • 获取 A 的结果并创建结果 X
  • 获取 B + X 的结果并填充适配器

    @GET("/{object_id}/object_a")
        Observable<List<Object_A>> getObjectAList(
            @Path("object_id") long object_id);
    
    
    @GET("/{object_id}/object_b")
        Observable<List<Object_B>> getObjectBList(
            @Path("object_id") long object_id);
    

这就是我在尝试使用 RX java 时迷失的地方。我可以获取 api 调用 A 的结果并完成我的工作 但我不确定如何获取刚刚生成的结果并将其与 API 调用 B 结合起来。

aService. getObjectAList(object_a.getID())
            .subscribeOn(AndroidSchedulers.mainThread())
            .observeOn(AndroidSchedulers.main)
            .subscribe(new Action1<List<Object_A>>() {

                @Override
                public void call(List<Section> sections) {
                    // Do Stuff Here...
                    // Now i need to take this result and combine it with API Call B...
                }
            });

我想同时进行两个 API 调用,但我不确定如何链接在一起并组合 API 调用。任何帮助都是值得赞赏的。


像这样的东西吗?

Observable
        // make api call for A list and B list
        .combineLatest(getObjectAList(), getObjectBList(), new Func2<List<Object_A>, List<Object_B>, Object>() {
            @Override
            public Object call(List<Object_A> o, List<Object_B> o2) {
                // Do what you need to do in the background thread
                List x = createX(o);
                List y = createY(x, o2);
                return y;
            }
        })
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<Object>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(Object y) {
                // UI thread, do what you need e.g. renders the list
                mAdapter.setList(y);
            }
        });

更换正确的类型应该会让您非常接近解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 API 调用与 RX Java 相结合 的相关文章

  • 与其他图标相比,AppCompat ShareActionProvider 图标太大

    我将 ActionBarSherlock 更改为 AppCompat v7 我已经完成了使其工作所需的所有更改 但是共享图标 使用 ShareActionProvider 发生了一些奇怪的情况 与其他图标相比 共享图标太大 我还使用支持库进
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 使用库来维护免费/付费的应用程序版本

    维护免费 付费应用程序版本的共识似乎是使用库 并从每个活动中设置一个标志 以从代码库中获取不同的功能 这有多安全 据我了解 一个人可以root他们的手机 获取APK 并且可以对其进行反编译 即使代码被混淆 也不难看出该应用程序是带有标志的包
  • Firebase 数据库快速入门处理计数的方式安全吗?

    我想为文章点赞创建一个增量字段 我指的是这个链接 https firebase google com docs database android save data save data as transactions https fireb
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 将正确的上下文传递给 greendao 的 OpenHelper 构造函数

    如果我理解正确的话 在使用数据库时 我必须执行以下操作 DaoMaster OpenHelper helper new DaoMaster OpenHelper this test db null Override public void
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • 在 Android 中长按时从操作模式中删除后退/主页按钮

    我已经在里面长按实现了上下文操作模式recycler view 为此我打电话给ActionModeCallback从创建动作模式开始 创建动作模式时 默认显示后退箭头 检查如下 单击后退箭头 操作模式将关闭 现在我想要hide or rem
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • 以编程方式更新 Android 中的联系人姓名和电话号码

    我创建一个应用程序来读取 更新 删除联系人详细信息 这是更新联系人姓名和电话号码的问题 有人可以帮助我吗 我该怎么做 我正在使用以下代码 但它不起作用 Override public View onCreateView LayoutInfl
  • Web 视图未在 Android 中加载本地 html 文件

    I am integrating html in android I have created a web view But i am not able load local html page Surprisingly web view
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • 直接使用从密钥库加载的 SecretKey 时,密钥用户未经过身份验证

    我正在尝试使用 Cipher 和在 KeyStore 中加载的 SecretKey 来加密数据 但总是收到此错误 导致 android security KeyStoreException 关键用户未经过身份验证 我尝试自己创建 Secre
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • PHP 5.3 并通过引用分配 new 的返回值

    通过引用分配 new 的返回值已经已弃用在 PHP 5 3 中 像这样 obj new Foo 现在抛出一个E DEPRECATED error 当将具有大量遗留代码的大型应用程序升级到 5 3 时 这会导致许多不需要的通知 作为解决此问题
  • Django REST Framework POST 嵌套对象

    我现在面临一个小问题Django 休息框架 我正在尝试发布一个其中包含嵌套对象的对象 这是我的serializers py class ClassSerializer serializers ModelSerializer class Me
  • 如果在 64 位代码中使用 32 位 int 0x80 Linux ABI 会发生什么?

    int 0x80在 Linux 上总是调用 32 位 ABI 无论从什么模式调用 args inebx ecx 以及来自的系统调用号 usr include asm unistd 32 h 或者在没有编译的 64 位内核上崩溃CONFIG
  • 使用 css 仅选择表格中的第一行

    我在 HTML 页面中有很多表 其中一些仅使用tr td其他人正在尽其所能 thead tbody tfoot tr th td 由于某些问题 我们使用 CSS 规则来制作表格的顶部和左侧边框以及每个td有自己的右边框和下边框 因为这个特殊
  • 从 Haskell 中的“Maybe a”返回类型获取“a”值

    我有一个 Haskell 函数eval WExp gt Memory gt WValue对于不同的情况有一堆不同的实例 目前 有关知识WExp Memory and WValue不相关 我的问题是 对于一个特定的实例eval 我正在使用lo
  • 测试使用 ActiveRecord 模型的 gem

    我编写了一个 gem 如果您传入 ActiveRecord 模型 它会将数据导入到您的数据库中 例如 importer Importer new Widget importer import data source 有没有好的方法来测试这个
  • 如何使用绑定源判断用户是否修改了数据?

    我有一个绑定到绑定源的 DataGridView 该绑定源又绑定到List
  • XAML 和 WPF - 将变量传递到 XAML Windows

    我对 WPF 还很陌生 我正在尝试加载一个 XAML 窗口并在其构造函数中将一个变量传递给此 XAML 因为我需要它从这个传递的变量中加载一些项目 有人能给我指出如何解决这个问题的方向吗 如何启动 XAML 窗口并给它一个变量 提前致谢 埃
  • 如何将 qm 文件转换为 ts 文件?

    我正在使用 Qt 4 5 来翻译 ts文件到一个 qm文件 但现在我已经失去了 ts file 我怎样才能把它转换回来 从 qm to ts 使用lconvert lconvert compiled qm o source ts
  • 从秩亏矩阵中提取线性独立行的例程

    我正在努力解决以下问题 我有一些非常大的矩阵 例如 至少2000x2000 并且可能将来它们甚至会达到10000x10000 并且等级非常小 2或3 称之为N 我需要找到一个高效的Python例程来从中提取线性独立的行 或列 矩阵是对称的
  • 更改应用程序区域设置后如何获取设备区域设置

    我正在根据用户选择更改应用程序区域设置 独立于设备区域设置 using public void setDefaultLocale Context context String locale Locale appLoc new Locale
  • 使用 Flexbox 的全宽和多列

    我正在尝试创建一个flexbox同一容器上有全角行和多列 我试过了flex break after 但不确定我错过了什么 我试图避免有多个类 例如 fullwidth and multiple columns 这就是我想要实现的目标 ite
  • Java 中的“无法映射的编码字符”警告

    我目前正在开发一个 Java 项目 该项目在编译时发出以下警告 src com myco apps AppDBCore java 439 warning unmappable character for encoding UTF8 java
  • 如何解决本地主机的“idpiframe_initialization_failed”问题?

    这是我的初始化代码 function HandleGoogleApiLibrary Load client auth2 libraries gapi load client auth2 callback function Initializ
  • gem install Rails 错误:执行 gem 时 ... (Errno::EACCES)

    我不知何故弄乱了我的 PATH 更改了它 并且我的红宝石和 Rails 宝石无法工作 为了解决这个问题 我所做的就是重新安装 RVM 现在我的红宝石在终端中运行良好 跑步时gem install rails我受到这样的欢迎 Permissi
  • 在WebGL中将大数组传递到uniform中

    想知道是否可以将大型数组传递到 WebGL 着色器中 如下所示 array here uniform vec4 huge mydynamicarray void main iterate through the array here to
  • 写入控制台和文本文件

    我从互联网上找到了下面的代码 可以工作 但它不会将打印的控制台写入 omt txt 它只写入System out println第二个 catch 块之后的语句 如果您运行一次代码 您就会明白我的意思 我想要的就是将控制台上的内容写入 om
  • 使用 PostGIS 将点转换为多边形

    我想使用 PostGIS 创建一个多边形表 表中的每一行 point 有三分ID Table point location 有点的位置信息 我用谷歌搜索了这个问题但没有找到答案 下面的代码有什么问题 SELECT ST GeomFromTe
  • 如何在 pygame 中找到两点之间的角度?

    我正在用 Pygame 用 Python 编写一个游戏 我的显示窗口的 坐标是 0 0 在左上角和 640 480 在右下角 角度是 0 当指向上方时 90 当指向右侧时 我有一个位于中心位置的玩家精灵 我希望枪上的炮塔指向玩家 我该怎么做
  • 将 API 调用与 RX Java 相结合

    我是 RXJava 的新手 我无法理解如何将 API 调用的结果链接在一起 我正在使用改造进行两个 API 调用 A 和 B 它们都返回一个可观察的对象列表 两个 API 调用都是独立的 因此我想同时进行这两个调用 但为了实现最终结果 我需