2014-12-08 13 views
9

Il problema di alto livello che sto cercando di risolvere è trasformare un elenco di oggetti contenuti in un oggetto recuperabile in un elenco di oggetti FooBar utilizzando RxJava.Utilizzo di RxJava per recuperare oggetti, trasformare un elenco di contenuti e utilizzare l'elenco

My (confuso) tentativo:

fooContainerObservable 
    .map(container -> container.getFooList()) 
    .flatMap(foo -> transformFooToFooBar(foo)) 
    .collect(/* What do I do here? Is collect the correct thing? Should I be using lift? */) 
    .subscribe(fooBarList -> /* Display the list */); 

mia confusione (o almeno un punto di esso) è il passo spostamento dell'elenco appiattita nuovo ad un elenco.

Nota: sto tentando di farlo in un'app Android.

+0

Puoi spiegare perché pensi di utilizzare 'collect'? Se si desidera raccogliere tutti gli elementi in una lista, basta chiamare 'toList'. – zsxwing

+0

@zsxwing perché sembrava avere senso che stavo "raccogliendo" più elementi dal flusso di eventi :). Non ero a conoscenza dell'esistenza di 'tolist '. Se rispondi suggerendola, la contrassegnerò come la soluzione! – loeschg

risposta

17

toList può raccogliere tutti gli articoli di un Osservabile in un List ed emetterlo. toList può essere implementato utilizzando collect, ma è molto più semplice di collect. Per il tuo esempio, sarà:

fooContainerObservable 
    .map(container -> container.getFooList()) 
    .flatMap(foo -> transformFooToFooBar(foo)) 
    .toList() 
    .subscribe(fooBarList -> /* Display the list */); 
Problemi correlati