如何在Android的会议室数据库中更改LiveData可观察的查询参数? [英] how to change LiveData observable query parameter with room database in android?
问题描述
我正在将实时数据与会议室数据库一起使用,我的活动观察到了从会议室数据库提供的实时数据.
I am using live data with room database and my activity observes live data provided from room database.
@Query("SELECT * FROM BUS WHERE BUS_CATEGORY = :busCategory")
LiveData<List<Bus>> getLiveBuses( String busCategory);
ViewModels通过Dao(数据访问对象)获取LiveData,活动会观察到此实时数据.
ViewModels gets LiveData via Dao(Data Access Object) and activity observes this live data.
现在可以正常工作了.但是,当busCategory更改时,我无法修改此实时数据来获取新选择的busCategory的公交车.
Now it works fine. But when busCategory changes i can't modify this live data to get buses for newly selected busCategory.
那我如何在查询参数可变的情况下观察到相同的liveData?
推荐答案
我建议您使用viewModel.我进行了查询,并使用MutableLiveData观察了更改. 第一步
I suggest you to to use viewModel. I did the query and observe changes using MutableLiveData. First step
val mutableBusCategory: MutableLiveData<String> = MutableLiveData()
可变活数据的设置者
fun searchByCategory(param: String) {
mutableBusCategory.value = param
}
可以观察到变化
val busObservable: LiveData<Bus> = Transformations.switchMap(mutableBusCategory) { param->
repository.getLiveBuses(param)
}
观察实时数据的最后一步
and final step to observe the live data
busObservable.observe(this, Observer {
//your logic for list})
并触发mutablelivedata
and to trigger mutablelivedata
searchByCategory(//categoryName)
这篇关于如何在Android的会议室数据库中更改LiveData可观察的查询参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!