Observables opcionales en combinar

Como definido, combine_test en rx solo emite si todos los valores han cambiado al less una vez.

(siempre y cuando cada fuente de los Observables haya emitido al less un elemento)

Lo uso para manipular vistas en mis vistas de Android. Por ejemplo, habilito un button de llamada a la acción tan pronto como todos los observables emiten un valor válido. De lo contrario lo desactivo.

Observable.combineLatest( toObservable(email), toObservable(username), toObservable(status), toObservable(phonenumber), toObservable(birthdate), Function5<String, String, String, String, Date, Boolean> { email, username, status, phonenumber, birthdate -> validator?.checkEmail(email) ?: true // and much more... } ).subscribeBy { ctaEnabled.set(it) } 

Con ese fragment, ctaEnabled solo se establece en verdadero si todos los valores al less cambiaron uno. Porque Función5 solo se llama si todos los Observables han emitido al less 1 elemento.

PERO, el campo de estado y date de nacimiento son opcionales y no deben llenarse. Porque todos los campos de Observable se inicializan con nulo y no se pueden establecer explícitamente en nulo (no se permite en rxjava 2) el estado y el cumpleaños no se emiten cuando el usuario no escribe text en él.

 val status: ObservableField<String> = ObservableField() val phonenumber: ObservableField<String> = ObservableField() val birthdate: ObservableField<Date> = ObservableField() // ... and so on 

Consideré usar .startWith("") que resuelve el problema para la cadena Observables porque todas las cadenas Observables emiten al less una cadena vacía. Pero no puedo usar esta solución para el campo Fecha porque es anulable.

Tal vez combineLatest no es la operación que estoy buscando, pero no puedo encontrar una forma adecuada de manejar los observables opcionales.

Saludos y gracias, Moritz