Использование RxJava для извлечения объекта, преобразования содержащего списка и использования списка

проблема высокого уровня, которую я пытаюсь решить, - это преобразование списка Foo объекты, содержащиеся в извлеченном FooContainer (наблюдаемый) в список FooBar объекты, использующие RxJava.

моя (запутанная) попытка:

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

мое замешательство (или, по крайней мере, одна его точка) - это шаг, перемещающий сплющенный список обратно в список.

примечание: Я пытаюсь сделать это в приложении для Android.

1 ответов


toList может собирать все элементы наблюдаемого в List и излучать его. toList может быть реализован с помощью collect, но это намного проще, чем collect. Для вашего примера это будет:

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