RxJava 和 Retrofit - Rx 的第一步

2023-12-31

使用 RxJava(不带 Retrolambda),我想进行一些 API 调用并用它来完成我的数据。我的不完整对象是一个“电视节目”,其中包含对象“季节”列表。这个“季节”是空的,我需要用剧集来完成它。

Observable<TvShow> getDataTVShow(long idTvShow)
//get TvShow with empty seasons (except season number)

Observable<Season> getDataSeason(long idTvShow, int seasonNumber); 
//get one complete season with episodes

所以我想:

  • 获取我的“TvShow”对象(OK)
  • 从我的“TvShow”对象迭代季节(列表 ),并为每个季节执行 API 调用,以使我的季节完全完成并更新列表中的“旧”季节。
  • 然后,一旦我们拥有了所需的一切,将数据保存到数据库中(订阅者部分)

到目前为止,我只有:

Observable<TvShow> = apiService.getDataTvShow(idTvShow)

我现在需要迭代季节,我尝试使用运算符“map”从“TvShow”对象切换到我的季节列表(tvShow.getSeasons()),但我不确定是否正确。除此之外,我知道“doOnNext”将用于更新我的“旧”季节,仅此而已。

我尝试使用这个很好的例子:在 android 中使用 RxJava 和 Retrofit 处理列表 https://stackoverflow.com/questions/27693425/handling-lists-with-rxjava-and-retrofit-in-android但我还是被困住了:(

如果你能帮我解决这个问题,那就太好了:)


例如,您有两个可观察量:

Observable<Season> getSeason(int id)
Observable<TvShow> getTvShow(String id)

电视节目然后加载每个季节和秋季电视节目的声音大小:

  Observable<TvShow> getFilledTvShow = getTvShow("123")
      .flatMap(tvShow ->
              //make stream observable from seasons
              Observable.from(tvShow.seasons)
                  //load each season from network
                  .flatMap(season -> getSeason(season.id))
                      //then collect all results to ArrayList
                  .collect(() -> new ArrayList<Season>(),
                      (seasons, filledSeason) -> seasons.add(filledSeason))
                      //finally fill tvShow and return it
                  .map(filledSeasons_ -> {
                     tvShow.seasons = filledSeasons_;
                     return tvShow;
                  })
      );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxJava 和 Retrofit - Rx 的第一步 的相关文章

随机推荐

  • Chrome远程调试显示设备但不检查链接

    我想在 Chrome 上远程调试 Android 应用程序 我的设备是 Qmobile A11 Note 配备 Android v4 0 4 Google Chrome v42 和 Cordova v3 7 我已在我的设备上启用 USB 调
  • Android:将变量传递给已运行的服务

    我在将值从活动传递到已运行的服务时遇到问题 我想知道最好的方法是什么 添加额外内容不起作用 因为我相信这必须在意图开始之前完成 如我错了请纠正我 任何帮助都会很棒 如果需要的话我可以详细说明 Dan 如果您的服务不是IntentServic
  • 如何将 NTLM 身份验证与 Active Directory 结合使用

    我正在尝试在我们的内部站点之一上实施 NTLM 身份验证 一切正常 我不知道的一个难题是如何从 NTLM 获取信息并使用 Active Directory 进行身份验证 有一个NTLM 的良好描述 http www innovation c
  • PHP 关闭:无法写入文件?

    我使用 Log 类在执行期间存储消息 然后应该在关闭时将这些消息写入文件 使用 register shutdown function 但由于某种原因 我总是收到 file put contents 无法打开流 没有这样的文件或目录 文件不存
  • 使 Visual Studio 在项目文件更改时自动重新加载解决方案

    在我正在处理的当前项目中 目前存在大量代码变动 这意味着从源代码管理进行更新有时可能意味着许多 csproj 文件更改 众所周知 VS2010没有 Reload all 按钮 但是你必须重新加载每个项目并确认每次重新加载 有没有一种方法可以
  • 我想将 sqlite3 db 从内存复制到硬盘。我能怎么做? [复制]

    这个问题在这里已经有答案了 我想将 sqlite 数据库从内存复制到硬盘 我能怎么做 我尝试这样 conn phy sqlite3 connect phy db conn sqlite3 connect memory c conn curs
  • OpenCV C/C++ 中仅过滤出一个轮廓

    我正在尝试编写一个程序 使用基于 Canny 过滤器和轮廓查找功能的摄像机 网络摄像头来检测任何形状的物体 这是我的程序 int main int argc char argv CvCapture cam CvMoments moments
  • 自定义异常过滤器在 asp.net MVC 中未被命中

    我有一个自定义异常过滤器 用于捕获我编写的自定义异常 但由于某种原因 当我抛出异常时 它永远不会到达过滤器 相反 我只是收到一个错误 表明我的异常未由用户代码处理 任何人都可以提供一些关于我应该如何设置的建议 帮助吗 相关代码如下 cont
  • 在 QT 中显示(渲染)字符串中的 HTML

    我在 QString 中有 html 我可以使用什么小部件来显示它 QWebView不是必需的 因为我不访问互联网 QWebView http doc qt io qt 4 8 qwebview htmls setHtml http doc
  • ReSharper:查找可选参数的用法

    如果我有一个带有可选参数的函数 是否有一种简单的方法可以找到我的代码中调用该函数并将值传递给该参数的所有位置 该函数有许多非默认参数 因此扫描调用该函数的位置的通常查找用法结果是有问题的 因为它会修剪行 并且我看不到是否使用了可选参数 Wi
  • 快速获得多个链表的部分排序的算法

    我有一个情况 如下 I have n双向链表 每个列表都有一个哨兵开始和结束 这些列表都有same开始和结束节点 不是必需的 但为了简单起见 这些列表是同质的并且可能共享项目 我想找到所有节点的部分排序n列表 从开始节点开始 到结束节点结束
  • JMSTemplate 中的 setSessionTransacted 到底意味着什么?

    如果我正确理解 Spring 文档 请解释一下 Spring 文档指出 https docs spring io spring docs current spring framework reference integration html
  • 具有相同名称的多个文本输入 - 添加到数据库

    我有一个包含多个字段的表单 所有字段都可以相乘
  • 大 O 表示法运行时

    我已经得到了一些代码来计算它们的大 O 运行时间 有人可以告诉我我是否走在正确的轨道上吗 program1 int i count 0 n 20000 for i 0 i lt n n i count 那是 O n 2 吗 number2
  • 在 PHP 中创建新线程(?)[重复]

    这个问题在这里已经有答案了 可能的重复 php执行后台进程 https stackoverflow com questions 45953 php execute a background process 我怎样才能实现应该在 php 线程
  • OSX:proc_pidinfo 对于其他用户的进程返回 0

    我需要获取有关在 Mac OSX 上运行进程的一些信息 PID UID GID 进程名称 我试过proc pidinfo 对于我自己的流程来说 它工作得很好 但是 对于其他用户拥有的进程 则返回 0 没有关于此功能的文档 但根据网上找到的资
  • 如何使用 sbt 构建 play 框架示例应用程序(不是 play)?

    我在示例应用程序中调用 sbt 时收到 NPE 请注意 我们无法使用 play 运行我们的整个应用程序 我们需要能够通过 sbt 运行它 C apps playframework samples scala websocket chat g
  • 如何在 RetryPolicy 上使用策略包装?

    我有以下使用的重试策略Polly Extensions Http var retryPolicy Policy Handle
  • Rails 跨多列验证唯一性,不区分大小写

    我有一个包含两个字段的模型 我将其称为first name 和last name 并且我想确保两者的组合不区分大小写是唯一的 我通过使用这个已经完成了一半 validates uniqueness of first name scope g
  • RxJava 和 Retrofit - Rx 的第一步

    使用 RxJava 不带 Retrolambda 我想进行一些 API 调用并用它来完成我的数据 我的不完整对象是一个 电视节目 其中包含对象 季节 列表 这个 季节 是空的 我需要用剧集来完成它 Observable