2014-12-08 2 views
9

Das hohe Problem mir eine Liste von Objekten in einem Foo geholten FooContainer (beobachtbar) enthalten ist, zu lösen Im Versuch ist die Umwandlung in eine Liste von Objekten mit FooBar RxJava.RxJava Objekt abzurufen Verwendung Transformation eine Liste enthält, und verwendet die Liste

My (verwirrt) Versuch:

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 */); 

Meine Verwirrung (oder zumindest ein Punkt davon) ist der Schritt die abgeflachten Liste zurück, um eine Liste zu bewegen.

Hinweis: Ich versuche dies in einer Android App zu tun.

+0

Können Sie erklären, warum Sie planen, 'collect' zu verwenden? Wenn Sie alle Elemente zu einer Liste sammeln möchten, rufen Sie einfach 'toList' auf. – zsxwing

+0

@zsxwing, weil es so aussah, als ob ich mehrere Elemente aus dem Strom der Ereignisse "sammle" :). Mir war nicht bewusst, dass 'toList' existierte. Wenn Sie antworten, dass dies vorgeschlagen wird, werde ich es als die Lösung markieren! – loeschg

Antwort

17

toList können alle Artikel eines Observable in eine List sammeln und emittieren. toList kann mit collect implementiert werden, aber es ist viel einfacher als collect. Für Ihr Beispiel wird es sein:

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