android – 将Observable >>转换为Observable >>

我尝试使用Realm和Rx Java实现模式Repository.存储库接口具有这样的签名
Observable<List<T>> query(Specification specification);

因此,当我使用Realm并想要检索结果“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();
   });

解决方法

在观看Dan Lew关于常见RxJava错误的会议( mistake flattening list)后,我发现了与此案相关的常见错误.

因此,此案例的解决方案如下.

realmResults.flatMap(list ->
            Observable.from(list)
                    .map(plantRealm -> toPlant.map(plantRealm))
                    .toList())

这个视频太棒了,我强烈推荐观看.

如果我想从其他Thread访问realm对象,我遇到此解决方案的问题.我可以解决这样的其他角落情况,但我仍然坚持这个.

解决了这个……

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...