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

前端之家收集整理的这篇文章主要介绍了android – 将Observable >>转换为Observable >>前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用Realm和Rx @L_404_0@实现模式Repository.存储库接口具有这样的签名
  1. Observable<List<T>> query(Specification specification);

因此,当我使用Realm并想要检索结果“asObservable”时,我得到了Observable>.我找不到改变Observable的方法>进入Observable>.

任何人都可以帮忙解决这个问题吗?

我试过这样的事

  1. final Observable<RealmResults<PlantRealm>> realmResults = realm.where(PlantRealm.class)
  2. .equalTo(PlantTable.ID,"1")
  3. .findAll().asObservable();
  4.  
  5. // convert Observable<RealmResults<PlantRealm>> into Observable<List<PlantRealm>>
  6.  
  7. return realmResults.flatMap(Observable::from).toList().map(list -> {
  8.  
  9. for (PlantRealm plantRealm : list) {
  10. plants.add(toPlant.map(plantRealm));
  11. }
  12. return Observable.from(plants);
  13. }
  14. );

但类型检查系统仍在抱怨….

  1. return Observable.create( subscriber -> {
  2.  
  3. final Realm realm = Realm.getInstance(realmConfiguration);
  4. final RealmResults<PlantRealm> realmResults = realm.where(PlantRealm.class)
  5. .equalTo(PlantTable.ID,"1")
  6. .findAll();
  7.  
  8. final List<Plant> plants = new ArrayList<>();
  9.  
  10. for (PlantRealm plantRealm : realmResults) {
  11. plants.add(toPlant.map(plantRealm));
  12. }
  13.  
  14. realm.close();
  15.  
  16. subscriber.onNext(plants);
  17. subscriber.onCompleted();
  18. });

解决方法

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

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

  1. realmResults.flatMap(list ->
  2. Observable.from(list)
  3. .map(plantRealm -> toPlant.map(plantRealm))
  4. .toList())

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

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

解决了这个……

猜你在找的Android相关文章