如何在Android的会议室数据库中更改LiveData可观察的查询参数?

问题描述 投票:0回答:2

我正在使用房间数据库的实时数据,并且我的活动观察到了从房间数据库提供的实时数据。

@Query("SELECT * FROM BUS WHERE BUS_CATEGORY = :busCategory")
LiveData<List<Bus>> getLiveBuses( String busCategory);

ViewModels通过Dao(数据访问对象)获取LiveData,并且活动观察到此实时数据。

现在可以正常工作了。但是,当busCategory更改时,我无法修改此实时数据来获取新选择的busCategory的巴士。

因此,如何在查询参数可更改的情况下观察相同的liveData?

android observable android-livedata room
2个回答
1
投票

我建议您使用我进行查询的viewModel并使用MutableLiveData观察更改。第一步

var mutableCategory: MutableLiveData<String> = MutableLiveData()

可变活动数据的设置者

fun searchByCategory(param: String) {
    mutableCategory.value = param
}

观察到的变化

var busObservable: LiveData<Bus> = Transformations.switchMap(mutableCategory) { param->
    busModelDao.getLiveBuses(param)
}

以及观察实时数据的最后一步

 busObservable.observe(this, Observer {
        //your logic for list})

并触发mutablelivedata

searchByCategory(//categoryName)

1
投票

我认为这不是一个合理的期望。触发一个新查询并订阅它会更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.