我有一个Android应用程序与一个房间数据库,其中使用REST API。房间充当单一的事实来源,即当API结果保存在房间中时,我正在更新UI。
在我的一个屏幕上,我需要显示一个过滤列表(带有API的最新更新),例如,按作者过滤的电影列表。
当用户改变作者过滤器时,列表需要被更新,但当由于API调用(存储在db中)而在后端中的电影改变时,列表也需要被更新。
第二,我可以使用从房间调用创建的LiveData>对象来实现,它将从房间数据库中分派更改。
但是,如何将用户(通过切换过滤器)激活的更改合并到同一源(已过滤的电影列表)?
发布于 2019-07-07 13:22:39
对于其他任何人来说,使用MediatorLiveData实际上都很简单。
val selectedItem = MediatorLiveData<Voyage>()
var voyages: LiveData<Resource<List<Voyage>>>
var voyageFilter = MutableLiveData<VoyageFilter>()
selectedItem.addSource(voyageFilter) { filter ->
//do something
}
selectedItem.addSource(voyages) { listResource ->
//do something
}
https://stackoverflow.com/questions/54467220
复制相似问题