我正在使用房间数据库的实时数据,我的 Activity 观察房间数据库提供的实时数据。
@Query("SELECT * FROM BUS WHERE BUS_CATEGORY = :busCategory")
LiveData<List<Bus>> getLiveBuses( String busCategory);
ViewModels 通过 Dao(数据访问对象)获取 LiveData,Activity 会观察这些实时数据。
现在它工作正常。但是当 busCategory 更改时,我无法修改此实时数据以获取新选择的 busCategory 的总线。
那么在查询参数可变的情况下,我如何观察相同的 liveData 呢?
最佳答案
我建议你使用 viewModel。我使用 MutableLiveData 进行了查询并观察了变化。
第一步
val mutableBusCategory: MutableLiveData<String> = MutableLiveData()
可变实时数据的 setter
fun searchByCategory(param: String) {
mutableBusCategory.value = param
}
observable 观察变化
val busObservable: LiveData<Bus> = Transformations.switchMap(mutableBusCategory) { param->
repository.getLiveBuses(param)
}
最后一步是观察实时数据
busObservable.observe(this, Observer {
//your logic for list})
并触发 mutablelivedata
searchByCategory(//categoryName)
关于android - 如何在 android 中使用房间数据库更改 LiveData 可观察查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302768/