簡體   English   中英

如何在RxJava中的一個對象中合並兩個對象?

[英]How can I combine two object in one of the object in RxJava?

我有Data和DataDetail類,每個類都包含其中更重要的數據。 我有一個從后端獲取的List類,有一個具有id字段的Data我可以請求DataDetail,而DataDetail有一些在Data對象中為null的信息,因此我可以從DataDetail中獲取並在Data類中進行設置。

`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>>() { @Override public Flowable<DataDetail> apply(@io.reactivex.annotations.NonNull DataDetail dataDetail) throws Exception {
return //I want to have access data and dataDetail object } }) .toList();

.map()嗎? 在地圖中作為參數,我得到了可流動,可流動的DataDetail對象,但我需要訪問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 理想情況下,您可以創建一個單獨的模型來表示datadetail的數據。 但是作為一個快速的技巧,您可以使用Pair

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM