如何在Android的会议室数据库中更改LiveData可观察的查询参数? [英] how to change LiveData observable query parameter with room database in android?

查看:310
本文介绍了如何在Android的会议室数据库中更改LiveData可观察的查询参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将实时数据与会议室数据库一起使用,我的活动观察到了从会议室数据库提供的实时数据.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆