首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Observable<RealmResults<T>>>转换为Observable<List<T>>>

将Observable<RealmResults<T>>>转换为Observable<List<T>>>
EN

Stack Overflow用户
提问于 2016-04-26 19:42:23
回答 3查看 1.9K关注 0票数 7

我试图使用领域和RxJava实现模式库。存储库接口具有如下签名

代码语言:javascript
运行
复制
Observable<List<T>> query(Specification specification);

因此,当我使用领域并想检索结果"asObservable“时,我得到了Observable>。我无法找到将Observable>转换为Observable>的方法。

有人能帮忙解决这个问题吗?

我尝试过这样的方法

代码语言:javascript
运行
复制
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);
            }
    );

但是类型检查系统还在抱怨..。

代码语言:javascript
运行
复制
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();
   });
EN

Stack Overflow用户

回答已采纳

发布于 2016-04-27 13:15:36

在观看了丹·卢( Dan )关于 RxJava After (错误平坦列表)的会议之后,我发现了一个与这个案例相关的常见错误。

因此,这种情况的解决方案如下。

代码语言:javascript
运行
复制
realmResults.flatMap(list ->
            Observable.from(list)
                    .map(plantRealm -> toPlant.map(plantRealm))
                    .toList())

这个视频太棒了,我强烈推荐你看。

如果我想从其他线程访问领域对象,那么这个解决方案就有问题。我可以解决其他像这样的案子,但我仍然被困在这个案子里。

我解决了这个..。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36874313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档