如何在 RxJava 中将两个对象合并到一个对象中?
How can I combine two object in one of the object in RxJava?
我有 Data 和 DataDetail classes,它们中的每一个都包含比它们更近的数据
不包含。
我有从后端获取的列表 class,
拥有具有 id 字段的数据,我可以请求 DataDetail,而 DataDetail 具有一些在 Data 对象中为空的信息,因此我可以从 DataDetail 获取并在 Data class 中设置。
`fetchData()
.toFlowable()
.flatMapIterable(datas->datas).map(new Function<Data, Flowable<DataDetail>>() {
@Override
public Flowable<DataDetail>`apply(@io.reactivex.annotations.NonNull Data data) throws Exception {
return
fetchDataDetail(data()).toFlowable(); }})
.map(new Function<DataDetail, Flowable<Data>>() {
@覆盖
public Flowable<DataDetail> apply(@io.reactivex.annotations.NonNull DataDetail dataDetail) 抛出异常{<br>
return //我想要访问数据和dataDetail对象}})
.toList();
.地图()?在地图中作为参数,我得到了 Flowable 的 DataDetail 对象,
Flowable 但我需要同时访问 Data 和 DataDetail 才能从 DataDetail 获取一些数据并在 Data 对象中设置
我相信这就是您的 api 返回的内容。
api.getList() // this returns a Single<List<Data>>
如果这是正确的,这可能就是您要实现的目标。
Single<List<Pair<Data,Detail>>> dataSingle = api.getList()
.toFlowable()
.flatMap(Flowable::fromIterable) // Convert the list to single emissions
.flatMap(data -> {
// Make api call to get details
return api.getDetails(data.getId())
.flatMap(dataDetails -> {
return Flowable.just(Pair.create(data,dataDetail));
});
}).toList();
显然,如果您需要将其转换为 Flowable
,您可以使用 toFlowable
.
轻松完成
Pair
来自 android.support.v4.util.Pair
。理想情况下,您创建一个单独的模型来表示来自 data
和 detail
的数据。但作为快速破解,您可以使用 Pair
希望对您有所帮助。
我有 Data 和 DataDetail classes,它们中的每一个都包含比它们更近的数据 不包含。 我有从后端获取的列表 class, 拥有具有 id 字段的数据,我可以请求 DataDetail,而 DataDetail 具有一些在 Data 对象中为空的信息,因此我可以从 DataDetail 获取并在 Data class 中设置。
`fetchData()
.toFlowable()
.flatMapIterable(datas->datas).map(new Function<Data, Flowable<DataDetail>>() {
@Override
public Flowable<DataDetail>`apply(@io.reactivex.annotations.NonNull Data data) throws Exception {
return
fetchDataDetail(data()).toFlowable(); }})
.map(new Function<DataDetail, Flowable<Data>>() {
@覆盖
public Flowable<DataDetail> apply(@io.reactivex.annotations.NonNull DataDetail dataDetail) 抛出异常{<br>
return //我想要访问数据和dataDetail对象}})
.toList();
.地图()?在地图中作为参数,我得到了 Flowable 的 DataDetail 对象, Flowable 但我需要同时访问 Data 和 DataDetail 才能从 DataDetail 获取一些数据并在 Data 对象中设置
我相信这就是您的 api 返回的内容。
api.getList() // this returns a Single<List<Data>>
如果这是正确的,这可能就是您要实现的目标。
Single<List<Pair<Data,Detail>>> dataSingle = api.getList()
.toFlowable()
.flatMap(Flowable::fromIterable) // Convert the list to single emissions
.flatMap(data -> {
// Make api call to get details
return api.getDetails(data.getId())
.flatMap(dataDetails -> {
return Flowable.just(Pair.create(data,dataDetail));
});
}).toList();
显然,如果您需要将其转换为 Flowable
,您可以使用 toFlowable
.
Pair
来自 android.support.v4.util.Pair
。理想情况下,您创建一个单独的模型来表示来自 data
和 detail
的数据。但作为快速破解,您可以使用 Pair
希望对您有所帮助。