等级制


  List<Job> myJob; //认为两个列表都不为空
  
  
    List<Tasks> myTasks = myJob.getTasks();
  


我现在正在使用以下代码

  Observable.just(myJob)
                    .subscribeOn(Schedulers.computation())
                    .concatMap(Observable::fromIterable)
                    .subscribe(new DefaultObserver<Job>() {
                        @Override
                        public void onNext(@NonNull Job myJob) {
                            Log.d(Utils.APP_LOG,
                                    "Total Task: \n " +
                                     "Job id-" + myJob.getJobId()
                                     + "tasks-" + myJob.getTasks().size());

                        }

                        @Override
                        public void onError(@NonNull Throwable e) {

                        }

                        @Override
                        public void onComplete() {

                        }
                    });


我能够获得父(myJob)列表和子(任务)列表。现在,我想将每个作业的任务列表合并到一个列表中。

我尝试使用This accepted answer执行查询,但是在我的方案中,工作(父)列表大小和任务(子)列表大小都是动态的。

最佳答案

Single<List<Tasks>> taskObservable = Observable.fromIterable(myJob)
            .flatMapIterable(Job::getTasks)
            .toList();


上面的代码将执行以下操作:


获取您的作业列表并将其转换为发出Job的流
对于每项工作,将其转换为发出Tasks的流
将所有发出的任务收集到一个列表中,然后发出List

07-24 09:49
查看更多