如何在Room数据库中使用ViewModel和Rx Observable更改搜索查询参数

时间:2019-06-20 14:18:00

标签: android rx-java android-room android-livedata

我有查询

@Query("SELECT * FROM call")
fun load(): DataSource.Factory<Int, Call>

我使用如下

class CallViewModel : ViewModel() {
    fun calls(context: Context): Observable<PagedList<Call>> {
        val dao = DBManager.Root.getInstance(context).getCallDao()
        return RxPagedListBuilder(dao.load(), 200).buildObservable()
    }
}

val viewModel = ViewModelProviders.of(this).get(CallViewModel::class.java)
disposable = viewModel.calls(this).subscribe(::onDataSourceChanged, ::onDataSourceError)

现在我要使用查询参数(用户名在edittext中)

@Query("SELECT * FROM call WHERE name LIKE :query")
fun load(query: String): DataSource.Factory<Int, Call>

我不能在此项目中使用 LiveData ,只能使用rx

所以看起来我需要 Transformations.switchMap 模拟

谢谢

0 个答案:

没有答案