Goal
I get a Single<List<Item>>
来自网络请求调用。最后,我想将这些物品用作Observable<Item2>
or a Single<List<Item2>>
。我从Item
to Item2
with new Item2(Item item)
.
我认为可行的
Single<List<Item>> items
.map(Observable::fromIterable) // Single<List> to Observable
.map(new Function<Observable<Item>, Observable<Item2>>() {
// I don't really know how I can do it here
})
.subscribeOn(//.../)
.observeOn(//.../);
我以为我可以改变的类型observables
with map
,所以我不太明白为什么第二个参数map
are Observable<Item>
s 而不是 Item。
我怎样才能正确地实现这一目标?
如果我理解正确的话,你想转换Single<List<Item>>
进入流Item2
对象,并能够按顺序使用它们。在这种情况下,您需要将列表转换为可观察的,使用顺序发出项目.toObservable().flatMap(...)
改变可观察对象的类型。
例如:
Single<List<Item>> items = Single.just(new ArrayList<>());
items.toObservable()
.flatMap(new Func1<List<Item>, Observable<Item>>() {
@Override
public Observable<Item> call(List<Item> items) {
return Observable.from(items);
}
})
.map(new Func1<Item, Item2>() {
@Override
public Item2 call(Item item) {
return new Item2(item);
}
})
.subscribeOn(//.../)
.observeOn(//.../);
或者,使用方法引用可以使此代码更加简单:
items.toObservable()
.flatMap(Observable::from)
.map(Item2::new)
.subscribeOn(//.../)
.observeOn(//.../)
.subscribe();
总结一下:如果你想改变类型Observable
, use .flatMap()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)