Bashir Fardoush
Bashir Fardoush

Reputation: 194

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

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 gets LiveData via Dao(Data Access Object) and activity observes this live data.

Now it works fine. But when busCategory changes i can't modify this live data to get buses for newly selected busCategory.

So how can i observe this same liveData where query parameters is changeable?

Upvotes: 11

Views: 4391

Answers (2)

Zulqarnain
Zulqarnain

Reputation: 651

I suggest you to to use viewModel. I did the query and observe changes using MutableLiveData. First step

val mutableBusCategory: MutableLiveData<String> = MutableLiveData()

Setter for mutablelivedata

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

observable to observe the change

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})

and to trigger mutablelivedata

searchByCategory(//categoryName)

Upvotes: 22

ayoola adedeji
ayoola adedeji

Reputation: 119

I don't think this is a reasonable expectation. It would make more sense to fire off a new query and subscribe to that.

Upvotes: 0

Related Questions