Bas*_*ush 9 android observable android-room android-livedata
我正在使用房间数据库的实时数据,我的活动观察从房间数据库提供的实时数据。
@Query("SELECT * FROM BUS WHERE BUS_CATEGORY = :busCategory")
LiveData<List<Bus>> getLiveBuses( String busCategory);
Run Code Online (Sandbox Code Playgroud)
ViewModels 通过 Dao(数据访问对象)获取 LiveData,Activity 观察这些实时数据。
现在它工作正常。但是当 busCategory 更改时,我无法修改此实时数据以获取新选择的 busCategory 的总线。
那么如何在查询参数可变的情况下观察相同的 liveData 呢?
小智 16
我建议你使用viewModel。我使用 MutableLiveData 进行了查询并观察了变化。第一步
val mutableBusCategory: MutableLiveData<String> = MutableLiveData()
Run Code Online (Sandbox Code Playgroud)
可变实时数据的设置器
fun searchByCategory(param: String) {
mutableBusCategory.value = param
}
Run Code Online (Sandbox Code Playgroud)
observable 观察变化
val busObservable: LiveData<Bus> = Transformations.switchMap(mutableBusCategory) { param->
repository.getLiveBuses(param)
}
Run Code Online (Sandbox Code Playgroud)
观察实时数据的最后一步
busObservable.observe(this, Observer {
//your logic for list})
Run Code Online (Sandbox Code Playgroud)
并触发 mutablelivedata
searchByCategory(//categoryName)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |