2016-03-25 85 views
2

我的代碼如下。如何將每個項目添加到RxJava列表中Android

Observable<List<Appointment>> callAppointments = appointmentServiceRx.appointmentService.getConfirmedAppointments(user_id); 
    callAppointments 
      .flatMapIterable(appointments -> appointments) 
      .flatMap(app -> Observable.zip(
        app, 
        patientServiceRx.patientService.getPatientById(app.patient_id), 
        servicesRestRx.servicesAPIServiceRx.getSubserviceById(app.subservice_id), 
        (appointment, patient, subservice) -> this.createListItem(appointment, patient, subservice) 
      )) 
      .toList() 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(); 

隨着helper方法如下

private Observable<AppointmentListItem> createListItem (Appointment app, Patient patient, Subservice subservice){ 
    AppointmentListItem item = new AppointmentListItem(app.appointment_id, subservice.subservice_name, 
                 patient.patient_fullname, app.appointment_datetime); 
    return Observable.just(item); 
} 

我得到了一個錯誤,指出預期的參數和實際參數時,我試着打createListItem在Observable.zip

不匹配這是錯誤消息。

Error message

請幫助.....

回答

0

Timeline: Activity_idle是一個紅色的鯡魚和無關您的問題。

看來你使用了一個血腥的字段appointment!你只有一個AppointmentListItem實例,這就是爲什麼!

編輯:Observable::zip是你的朋友!以下是我該怎麼做:

callAppointments 
     .flatMapIterable(appointments -> appointments) 
     .flatMap(app -> Observable.zip(
      app, 
      patientServiceRx.getService().getPatientById(app.patient_id), 
      servicesRestRx.getService().getSubserviceById(app.subservice_id), 
      (app, patient, subservice) -> this.createListItem(app, patient, subservice)) 
     .toList() 
     .subscribeOn(Schedulers.io()) 
     .observeOn(AndroidSchedulers.mainThread()) 
     .subscribe(list -> {/*set adapter*/}, error -> {/* handle error */}); 

這有兩個並行的預約電話的額外好處。請記住,flatMap不一定會保留原始順序,所以您可能會以與Appointments不同的順序結束AppointmentListItem。

+0

啊我明白了。那麼如何將每個結果調用檢索到Appointment對象而不是使用字段呢?任何建議? –

+0

我編輯了原文。我也想知道爲什麼你使用'getService()'調用;爲什麼不直接注入服務? –

+0

可否請您解釋更多關於直接注入服務的信息?我仍然是這種東西的新手。 –

相關問題