У меня есть Observable
, который возвращает один экземпляр Cursor
(Observable<Cursor>
). Я пытаюсь использовать ContentObservable.fromCursor
для получения каждой строки курсора в обратном вызове onNext
.
Одно из решений, которое я придумал, это такая конструкция:
ContentObservable.fromCursor(cursorObservable.toBlocking().first())
.subscribe(cursor -> {
// map to object
// add to outer collection
}, e -> {}, () -> {
// do something with list of objects (outer collection)
});
Это выглядит как взлом из-за toBlocking().first()
, но это работает. Мне это не нравится, потому что большая часть обработки выполняется в обратном вызове onNext
, и нам нужно создать внешнюю коллекцию для хранения промежуточных результатов.
Я хотел использовать его так:
cursorObservable.map(ContentObservable::fromCursor)
.map(fromCursor -> fromCursor.toBlocking().first())
.map(/* map to object */)
.toList()
.subscribe(objects -> {
// do something with list of objects
}
Это по-прежнему использует toBlocking().first()
и не работает, потому что после завершения наблюдаемого fromCursor
курсор закрывается, поэтому нет возможности сопоставить его с объектом. Есть ли лучший способ сгладить Observable<Observable<Cursor>>
до Observable<Cursor>
?