Я использую RxJava 2. *, и я хочу объединить результаты двух наблюдаемых (один из модификации, а другой из комнаты) с помощью оператора zip (не стесняйтесь предлагать лучше).
Объекты модели, поступающие с удаленного сервера, отличаются от объектов, поступающих из базы данных комнат.
- Я хочу отобразить объекты из удаленного в локальный
- Объедините эти два результата
- Показать результат.
Мой удаленный 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()
}
Но когда я пытаюсь заархивировать эти две наблюдаемые, вот так:
val combinedObservable : Observable<List<KmagCategory>> = Observables.zip(KMagApp.database?.categories()?.categories()!!,newSetting)
Я получаю сообщение Ошибка ввода типа, ожидаемое несоответствие типа