簡體   English   中英

如何使用 android 中的房間數據庫更改 LiveData 可觀察查詢參數?

[英]how to change LiveData observable query parameter with room database in android?

我正在使用帶有房間數據庫的實時數據,我的活動觀察房間數據庫提供的實時數據。

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

可變實時數據的設置器

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)

我不認為這是一個合理的期望。 啟動一個新查詢並訂閱它會更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM