Как позвонить в очередь обратного вызова? - PullRequest
0 голосов
/ 25 марта 2020

Я пытался использовать обратный вызов enqueue, но он показывает, что в качестве ошибки типа "Несоответствие типов.

Обязательно: обратный вызов <* List <-Location >>"

, и это именно то, что Я написал.

fun searchLocation(searchString: String){
    showProgress.value = true

    val retrofit = Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create())
        .build()

    val service = retrofit.create(WeatherNetwork::class.java)
    service.getLocation(searchString).enqueue(object : Callback<List<Location>>{
        override fun onFailure(call: Call<List<Location>>, t: Throwable) {
        }
        override fun onResponse(
            call: Call<List<Location>>,
            response: Response<List<Location>>
        ) {
         }
    })
}

Может быть, это будет более ясно с пи c

UPD: WeatherNetwork

 const val BASE_URL = "/My API/"

 interface WeatherNetwork{

 @GET ("search?")
 fun getLocation(SearchString : String) : List<Location>
}

1 Ответ

0 голосов
/ 25 марта 2020

Ваш WeatherNetwork неверен, ваш вызов API должен вернуть Call

изменение:

@GET ("search?")
 fun getLocation(SearchString : String) : List<Location>
}

На

@GET ("search?")
 fun getLocation(SearchString : String) : Call<List<Location>>
}

Примечание:

Я думаю, вам нужно изменить @GET("search?"), чтобы он заработал.

Например, если ваш REST URI: localhost/search?st="wikipedia"

Вам необходимо обновите свою функцию до:

@GET ("search")
 fun getLocation(@Query("st") SearchString : String) : List<Location>
}

посмотрите на: Модернизация 2 - Параметр URL-запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...