如何应用RxJava操作符



我有以下对象结构

class Object1 {
  A[] item1;    //array of Object A
  B[] item2;    //array of Object B
  C[] item3;    //array of Object C
}
class C {
  int value1;
  int value2;
  String imageUrl; //null, to be updated from a api call
}

我得到一个Observable<Object>进行一个改造api调用。对象CimageUrl字段是null,我必须通过进行另一个改造api调用来更新。我想使用RxJava在Observable<Object1>中的C[]中更新每个Object C的imageUrl。如何使用RxJava操作符?

我希望该方法返回更新的Observable<Object1>

应该可以:

getObject1()
        .flatMap(obj1 -> Observable.from(obj1.item3)
                .cast(C.class)
                .flatMap(item -> getImageUrl(item.value1).doOnNext(url -> item.imageUrl = url))
                .toList()
                .map(items -> obj1))

为了测试的目的,我的getImageUrl看起来像这样:

Observable<String> getImageUrl(int id) {
    return Observable.just(String.format("id = %d", id));
}

它看起来像这样:

Observable<String> getImageUrl(int id) {
    return api.getImageUrl(id).map(SomeResponse::getImageUrl);
}

我不是RxJava的专家,但是像这样如何:

observable
    .flatMap(Observable.from(object1.item3))
    .flatMap(//do request and mix object)
    .collect()
    .filter(//map the new array to he object1)

相关内容

  • 没有找到相关文章

最新更新