Разрешены только безопасные или неаудированные звонки, разрешенные для нулевого типа приемника arraylist

Просто начал использовать kotlin для разработки Android. Мой arraylist объявлен как это –

var day1: ArrayList<DietPlanDetailModel>? = null 

Теперь я пытаюсь получить доступ к элементу по его положению

  val dietPlan= day1[position] 

но я получаю ниже времени компиляции,

Разрешены только безопасные или неаудированные звонки, разрешенные для нулевого типа приемника arraylist

Почему я получаю эту ошибку и как ее решить?

Проблема в том, что вы определили ArrayList как nullable . У вас есть два варианта:

1) не задайте переменную nullable (это зависит от вашего кода): var day1: ArrayList<DietPlanDetailModel> = ArrayList()

2) доступ к вашей структуре данных с нулевой проверкой: val dietPlan= day1?.get(position)

Вы сказали компилятору, что ваша переменная может быть нулевой (и ей присвоено значение null).

day1[position] по существу day1.get(position) который будет сбой при NPE, если day1 равен null -> null.get(position)

Если вы можете гарантировать, что day1 будет инициализирован, id рекомендует lateinit или просто прямо назначить новый Arraylist декларацией. Конечно, простой day1?.get(position) отлично работает.

Как определено, day1 может быть null но вы вызываете функцию, выполняя [] , что в основном совпадает с вызовом day1.get(index) .

Это может NullpointerException , которое пытается использовать компилятор Kotlin. Таким образом, разрешены только безопасные звонки: day1?.get() .

Intereting Posts
Наследование Kotlin: передать это как аргумент конструктора Почему мы не можем отметить видимость класса как «защищенного» в котлин? Весенняя загрузка с одностраничным приложением на AWS Elastic Beanstalk требует дополнительной перенаправления Сохранять ViewModels с объемом фрагмента во вращающемся экране Ручной Android-сканер штрих-кодов Android – Как получить доступ к сканеру и прочитать данные В чем разница между реализацией и компиляцией в gradle > Не удалось применить плагин > Для строки ввода: "" Сделать общий переход элемента между фрагментом и диалогом Kotlin и javax.validation.constraints.NotNull Как установить значение null для параметров функции в kotlin Почему у меня нет нулевой сцены? Хотя цикл в языке программирования Kotlin Kotlin – Незаконное использование обратного вызова встроенного параметра Как выполнить эту анимацию в CardView с помощью макета и поведения координатора? Пользовательский десериализатор для любого списка в Джексоне