Transformation.switchmap 除非搜索词更改,否则不会返回结果
Transformation.switchmap not returning result unless search term changes
我有一个 LiveData,它需要根据搜索查询 return 个帐户,如果没有查询 return 所有帐户。这是我的代码,我在我的 ViewModel class 中使用过,但是在初始化时没有显示任何帐户,只有当我更改 searchTerm 时它才会开始显示结果,并且在将搜索词设为空时也会显示结果。
val searchTerm = MutableLiveData<String>()
val accounts : LiveData<List<AccountModel>> = Transformations.switchMap(searchTerm){
if(it.isNullOrEmpty()){
Transformations.map(accountRepository.accountDAO.getAccounts()){
it.toDomainModel()
}
}else{
Transformations.map(accountRepository.accountDAO.getSearchedList(it)){
it.toDomainModel()
}
}
}
谁能指导我我做错了什么。
谢谢
你应该使用初始值。在您的 searhTerm 获得第一个值之前,您的 switchMap 没有被触发。
val searchTerm = MutableLiveData<String>("")
我有一个 LiveData,它需要根据搜索查询 return 个帐户,如果没有查询 return 所有帐户。这是我的代码,我在我的 ViewModel class 中使用过,但是在初始化时没有显示任何帐户,只有当我更改 searchTerm 时它才会开始显示结果,并且在将搜索词设为空时也会显示结果。
val searchTerm = MutableLiveData<String>()
val accounts : LiveData<List<AccountModel>> = Transformations.switchMap(searchTerm){
if(it.isNullOrEmpty()){
Transformations.map(accountRepository.accountDAO.getAccounts()){
it.toDomainModel()
}
}else{
Transformations.map(accountRepository.accountDAO.getSearchedList(it)){
it.toDomainModel()
}
}
}
谁能指导我我做错了什么。
谢谢
你应该使用初始值。在您的 searhTerm 获得第一个值之前,您的 switchMap 没有被触发。
val searchTerm = MutableLiveData<String>("")