Получение информации с сайта. Retrofit, корутины
Заранее извиняюсь за свою невежественность, но пошла уже вторая неделя, а я всё решаю задачку с получением списка городов с сайта через GET-запрос.
Итак, мои шаги: веб-разработчик скинула мне ссылку-метод для получения списка, с помощью Postman сделал data класс ответа:
class WebResponse {
data class RegionsData(
val `1`: String,
val `10`: String,
val `100`: String,
val `1000`: String,
val `1001`: String,
val `1002`: String,
val `1003`: String,
val `1004`: String,
val `1005`: String,
val `1006`: String,
val `1007`: String,
val `1008`: String,
val `1009`: String,
val `101`: String,
val `1010`: String,
val `1011`: String,
val `1012`: String,
val `1013`: String,
и далее...)
}
Вот с этим data классом отдельная беда - с ним приложение не запускается, а висит до ошибки StackOverFlowError. Да, список большой, но мне кажется что бывают проекты и с более тяжёлыми дата-классами. Так с этим и не разобрался.
Создал Retrofit адаптер:
object BaseApiManager {
val retrofitClient: RegionsAPI by lazy {
Retrofit.Builder()
.baseUrl("https://sdai-othodi.ru/")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(RegionsAPI::class.java)
}
}
Интерфейс:
interface RegionsAPI {
@GET("main/getcities_arr.php?id=2/")
suspend fun getRegions():WebResponse
}
И вроде можно начинать переходить к созданию метода для вызова списка, который я буду вызывать в Спиннере, но на этом я завис и не смог найти правильного решения:
fun gettingRegios() {
viewModelScope.async {
WebResponse() =
BaseApiManager.retrofitClient.getRegions()
}
}
Располагал метод внутри класса, который отвечает за соответствующий фрагмент. Я хочу лишь одного - подтягивать информацию с сайта и подставлять значения в своём Android проекте. Заранее благодарю и обнимаю!