Cambie Flowable <List <Obj1 >> a Flowable <List <Obj2 >> en la habitación

¿Cómo puedo leer una list fluida de valores de la habitación y convertirla en otro object que es una combinación de más valores de la habitación?

database.leadsDao().getLeads(leadState.name) .flatMap { val len = it.size.toLong() Flowable.fromIterable(it) .flatMap { Flowable.zip( database.orderDao().getById(it.orderId), database.orderMedicineDao().getByOrderId(it.orderId), database.patientDao().getById(it.patientId), Function3<Order, List<OrderMedicine>, Patient, LeadDetail> { order, orderMedicines, patient -> LeadDetail.from(it, patient, order, orderMedicines) }) } .take(len) .toList() .toFlowable() } 

El código anterior funciona pero no me gusta la parte de take(len) . Y sin eso, la transmisión nunca llama a Next del suscriptor. La secuencia sigue esperando más elementos, lo que no debería suceder ya que Flowable.fromIterable da un número finito o elementos y luego termina. Es decir, el código siguiente no funciona

 database.leadsDao().getLeads(leadState.name) .flatMap { Flowable.fromIterable(it) .flatMap { Flowable.zip( database.orderDao().getById(it.orderId), database.orderMedicineDao().getByOrderId(it.orderId), database.patientDao().getById(it.patientId), Function3<Order, List<OrderMedicine>, Patient, LeadDetail> { order, orderMedicines, patient -> LeadDetail.from(it, patient, order, orderMedicines) }) } .toList() .toFlowable() }