如何解决如何只为房间查询设置一个观察者
我正在使用该空间在本地数据库中存储一些从服务器端获取的数据。 这些数据将显示在recyclerView中, 还有一个searchView,允许用户搜索一些特定数据。
现在,我想知道有什么方法可以以一种方式应用其中两个功能吗? 我使用此查询来执行此操作,但看来观察者不会仅因为函数参数的更改而触发:
换句话说,我的问题是:
想象一下,我这样调用此查询:
database.searchFor(null,true).observe(this,observer{
....
})
在使用另一个参数调用查询后,如何触发上述观察者:
database.searchFor("Alex",false)
我应该改变结构和方式吗?
解决方法
考虑使用另一个LiveData和Transformation's switchMap。
假设您有ViewModel,可以在其中声明2个Livedata-第一个用于参数(keyword
和all
),第二个-用于数据库观察:
val params = MutableLiveData<Pair<String?,Boolean>>(Pair(null,true)) // <-- default parameters
val searchResults = Transformations.switchMap(params)
{
params -> database.searchFor(params.first,params.second) // <-- updates with parameters' changes
}
在“活动/片段”中设置参数的值并观察结果:
viewModel.searchResults.observe(this,Observer{
....
})
viewModel.params.value = Pair("Alex",false) // <-- to search results
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。