2017-09-27 4 views
-2

RxJava Kotlin flatmap ne renvoie pas les objets séparés de la chaîne fractionnée. mais retourne ListeRxJava Kotlin comment obtenir des objets séparés à partir de simples observables <String>

val source: Observable<String> = Observable.just("521934/2342/FOXTROT") 
.flatMap{Observable.fromArray(it.split("/"))} 
.subscribe{Log.d(TAG, "$it")} 

Il retourne la liste:

[521934, 2342, FOXTROT] 

Mais livre (Thomas Nield: Apprentissage RxJava/2017/Page 114) dit qu'il doit retourner des chaînes séparées

521934 
2342 
FOXTROT 

example from book

http://reactivex.io/documentation/operators/flatmap.html dit qu'il renvoie un objet unique. Dans mon cas, j'ai un objet liste unique. Donc, la documentation dit vrai. Mais je veux obtenir des résultats comme dans l'exemple du livre! Comment je peux diviser la liste et obtenir des objets séparés?

Répondre

0

Faire usage de flatMapIterable, de sorte que vous pouvez obtenir un flux des éléments de la liste:

Observable.just("521934/2342/FOXTROT") 
      .flatMap { input -> Observable.fromArray(input.split("/")) } 
      .flatMapIterable { items -> items } 
      .subscribe { item -> Log.d(TAG, item) }