防止在订阅Rxjava中创建observable

时间:2016-09-03 05:02:35

标签: rx-java reactive-programming retrofit2 rx-android

我是RxJava的新手并遇到了问题。这是我获取A:

列表的代码
 Utils.getRetrofit().create(StoryAPI.class).getCategories() // Observable<Wrapper<List<A>>>
     .map(Wrapper::getResult) // List<A>
     .subscribeOn(Schedulers.io())
     .observeOn(AndroidSchedulers.mainThread())
     .subscribe(list -> {
        Observable.range(0, list.size())
           .subscribe(m -> {
               menu.add(2, list.get(m).getId(), m + 6, list.get(m).getName());
            }, Logger::logException);
      }, Logger::logException);

有没有办法阻止这样的嵌套Observable,并将Observable.range移到subscribe()

之外

1 个答案:

答案 0 :(得分:0)

flatMap和Observable.from()

 // define i
 int i = 0;


  Utils.getRetrofit().create(MyAPI.class).getList() // got Observable<Wrapper<List<A>>>
 .map(Wrapper::getResult) // Wrapper to List<A>
 .flatMap(listResult->Observable.from(listResult))
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(result->{
      menu.add(2,result.getId(),i+6,result.getName());
      i++;
   });