Android viewmodel中的distinctUntilChanged不返回新获取的数据
我正在使用一个简单的searchview,当我在端点提交一个新字符串进行搜索时,它应该返回一个不同的列表,相反,当我更改该字符串时,它不会返回新请求的列表,而只是返回我首先获取的同一个列表 看法 视图模型Android viewmodel中的distinctUntilChanged不返回新获取的数据,android,android-fragments,kotlin,android-architecture-components,android-viewmodel,Android,Android Fragments,Kotlin,Android Architecture Components,Android Viewmodel,我正在使用一个简单的searchview,当我在端点提交一个新字符串进行搜索时,它应该返回一个不同的列表,相反,当我更改该字符串时,它不会返回新请求的列表,而只是返回我首先获取的同一个列表 看法 视图模型 class MainViewModel(私有val repo:repo):ViewModel(){ private val tragoNameData=MutableLiveData() 趣味setTrago(tragoName:String){ tragoNameData.value=tra
class MainViewModel(私有val repo:repo):ViewModel(){
private val tragoNameData=MutableLiveData()
趣味setTrago(tragoName:String){
tragoNameData.value=tragoName
}
val fetchTragosList=tragoNameData.distinctUntilChanged().switchMap{tragoName->
liveData(Dispatchers.IO){
发出(Resource.Loading())
试一试{
emit(repo.getTragosList(tragoName))
}捕获(e:例外){
发射(资源故障(e))
}
}
}
}
似乎distinctUntilChange并没有为新搜索的饮料重新设置我的端点,相反,它总是返回带有一些外部技术支持的玛格丽塔饮料列表,答案是 应该是
interface WebService {
@GET("search.php")
suspend fun getTragoByName(@Query("s") tragoName:String): DrinkList
@GET("filter.php")
suspend fun getAlcoholicDrink(@Query("a") alcoholicOrNot:String): DrinkList
}
class MainViewModel(private val repo:Repo):ViewModel(){
private val tragoNameData = MutableLiveData<String>()
fun setTrago(tragoName:String){
tragoNameData.value = tragoName
}
val fetchTragosList = tragoNameData.distinctUntilChanged().switchMap { tragoName ->
liveData(Dispatchers.IO) {
emit(Resource.Loading())
try{
emit(repo.getTragosList(tragoName))
}catch (e: Exception){
emit(Resource.Failure(e))
}
}
}
}
interface WebService {
@GET("search.php?s=")
suspend fun getTragoByName(@Query("tragoName") tragoName:String): DrinkList
@GET("filter.php?a=")
suspend fun getAlcoholicDrink(@Query("alcoholicOrNot") alcoholicOrNot:String): DrinkList
}
interface WebService {
@GET("search.php")
suspend fun getTragoByName(@Query("s") tragoName:String): DrinkList
@GET("filter.php")
suspend fun getAlcoholicDrink(@Query("a") alcoholicOrNot:String): DrinkList
}