我正在将实时数据与 session 室数据库一起使用,我的 Activity 观察到了 session 室数据库提供的实时数据。

@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()

可变 Activity 数据的二传手
fun searchByCategory(param: String) {
    mutableBusCategory.value = param
}

可以观察到变化
val busObservable: LiveData<Bus> = Transformations.switchMap(mutableBusCategory) { param->
    repository.getLiveBuses(param)
}

最后一步是观察实时数据
 busObservable.observe(this, Observer {
        //your logic for list})

并触发mutablelivedata
searchByCategory(//categoryName)

关于android - 如何在Android的 session 室数据库中更改LiveData可观察的查询参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58302768/

10-11 22:15
查看更多