Android viewmodel中的distinctUntilChanged不返回新获取的数据

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

我正在使用一个简单的searchview,当我在端点提交一个新字符串进行搜索时,它应该返回一个不同的列表,相反,当我更改该字符串时,它不会返回新请求的列表,而只是返回我首先获取的同一个列表

看法 视图模型
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
}