Dna*_*kin 4 android-room android-livedata
我订阅ids并search在ui中,但我没有得到任何结果,所以我介入调试器,发现转换没有在第一次触发后触发.所以当我setIds第一次调用时ids会更新但是对于第一次调用之后的每次调用都不会触发转换.同样适用于search.
什么可能出错的想法?
class MyViewModel : ViewModel() {
private val repository = Repository.sharedInstance
var recentRadius: LiveData<List<RecentRadius>>?
var recentRoute: LiveData<List<RecentRoute>>?
init {
recentRadius = repository.recentRadius()
recentRoute = repository.recentRoute()
}
private val idsInput = MutableLiveData<String>()
fun setIdsInput(textId: String) {
idsInput.value = textId
}
val ids: LiveData<List<String>> = Transformations.switchMap(idsInput) { id ->
repository.ids(id)
}
private val searchInput = MutableLiveData<Search>()
fun setSearchInput(search: Search) {
searchInput.value = search
}
val search: LiveData<SearchResult> = Transformations.switchMap(searchInput) { search ->
when (search.type) {
SearchType.ID -> repository.id(search)
SearchType.RADIUS -> repository.radius(search)
SearchType.ROUTE -> repository.route(search)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Aks*_*iya 17
转换未被触发的最常见原因是因为没有Observer观察它或输入LiveData没有被改变.
| 归档时间: |
|
| 查看次数: |
2141 次 |
| 最近记录: |