У вас есть этот конструктор для вашего адаптера, который принимает ненулевое значение List<Model.Country>
:
class CustomAdapter(var context: Context, val listCountry: List<Model.Country>)
А затем вы берете данные из сетевого ответа и передаете их в качестве параметра конструктору:
val listCountry = response!!.body().data.countryList
...
recyclerList.adapter = CustomAdapter(this@MainActivity, listCountry)
Именно здесь вы получаете сбой, потому что каким-то образом listCountry
в итоге содержит значение null
.
Скорее всего, одна из этих двух вещей идет не так, как надо:
- Если ваш класс модели здесь написан на Java, этот
countryList
будет иметь тип платформы , поэтому вы сами решаете, хотите ли вы считать его обнуляемым. - Даже если ваша модель написана на Kotlin, а свойство
countryList
не имеет значения NULL, если вы используете инструмент сериализации, который использует отражение для создания экземпляров моделей (например, Gson), значение null
может по-прежнему записываться в это свойство, если это то, на что отвечала сеть.
Что касается решения: напечатайте этот список явно как обнуляемый (в случае проблемы с типом платформы, здесь, в вашем коде,иначе в тебеr сетевой модели), а затем выполните нулевые проверки, которые навязывает вам компилятор:
val listCountry: List<Model.Country>? = response!!.body().data.countryList
...
if (listCountry != null) {
recyclerList.adapter = CustomAdapter(this@MainActivity, listCountry)
} else {
// handle missing part of network response somehow
}