android - 如何在 android 中使用房间数据库更改 LiveData 可观察查询参数?

标签 android observable android-room android-livedata

我正在使用房间数据库的实时数据,我的 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/

相关文章:

android - 为什么这个图像切换代码有内存泄漏?

java - 使用配置设置小部件的属性

json - 语法错误 : Unexpected token C in JSON at position 0

android - 房间迁移更改表不添加新列并迁移一次又一次地被调用

android - 在应用程序卸载时删除房间数据库

android - 在 Android Room 中插入实体一对多关系

android - 我的查询工作不正确

Android 可用内存

javascript - 仅在完成时才通过链接多个可观察值来防止金字塔

angular - 我如何将从可观察函数获得的值作为参数传递给另一个可观察函数