私は RxJava 2.* を使用しており、zip 演算子を使用して 2 つのオブザーバブル (1 つは改造から、もう 1 つは部屋から) の結果をマージしたいと考えています (お気軽に提案してください)。
リモート サーバーからのモデル オブジェクトは、ルーム データベースからのモデル オブジェクトとは異なります。
- リモートのオブジェクトをローカルのオブジェクトにマップしたい
- これら 2 つの結果をマージする
- 結果を表示します。
私のリモートAPIは次のようになります:
interface CategoryService{
@GET("categories")
fun getCategories(): Observable<List<Category>>
}
私の Room DAO クエリは次のようになります。
@Query("SELECT * FROM categories ORDER BY id")
abstract fun categories(): Observable<List<KmagCategory>>
私は Observable> を Observable> に次のように変換しました:
val newCategoryList : Observable<List<KmagCategory>> =settingService.getCategories().flatMap { list ->
Observable.fromIterable(list)
.map { item -> KmagCategory(item.id, item.title, item.slug, item.isFav) }
.toList()
.toObservable()
}
しかし、これら2つのオブザーバブルを次のように圧縮しようとすると:
val combinedObservable : Observable<List<KmagCategory>> = Observables.zip(KMagApp.database?.categories()?.categories()!!,newSetting)
Type inference failed, Expected type mismatch というメッセージが表示されます