我试图使用领域和RxJava实现模式库。存储库接口具有如下签名
Observable<List<T>> query(Specification specification);
因此,当我使用领域并想检索结果"asObservable“时,我得到了Observable>。我无法找到将Observable>转换为Observable>的方法。
有人能帮忙解决这个问题吗?
我尝试过这样的方法
final Observable<RealmResults<PlantRealm>> realmResults = realm.where(PlantRealm.class)
.equalTo(PlantTable.ID, "1")
.findAll().asObservable();
// convert Observable<RealmResults<PlantRealm>> into Observable<List<PlantRealm>>
return realmResults.flatMap(Observable::from).toList().map(list -> {
for (PlantRealm plantRealm : list) {
plants.add(toPlant.map(plantRealm));
}
return Observable.from(plants);
}
);
但是类型检查系统还在抱怨..。
return Observable.create( subscriber -> {
final Realm realm = Realm.getInstance(realmConfiguration);
final RealmResults<PlantRealm> realmResults = realm.where(PlantRealm.class)
.equalTo(PlantTable.ID, "1")
.findAll();
final List<Plant> plants = new ArrayList<>();
for (PlantRealm plantRealm : realmResults) {
plants.add(toPlant.map(plantRealm));
}
realm.close();
subscriber.onNext(plants);
subscriber.onCompleted();
});
发布于 2016-04-27 13:15:36
在观看了丹·卢( Dan )关于 RxJava After (错误平坦列表)的会议之后,我发现了一个与这个案例相关的常见错误。
因此,这种情况的解决方案如下。
realmResults.flatMap(list ->
Observable.from(list)
.map(plantRealm -> toPlant.map(plantRealm))
.toList())
这个视频太棒了,我强烈推荐你看。
如果我想从其他线程访问领域对象,那么这个解决方案就有问题。我可以解决其他像这样的案子,但我仍然被困在这个案子里。
我解决了这个..。
https://stackoverflow.com/questions/36874313
复制相似问题