【发布时间】:2015-05-06 11:40:34
【问题描述】:
我有一个 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<Observable<Cursor>> 扁平化为Observable<Cursor>?
【问题讨论】:
标签: android rx-java rx-android