Just started using kotlin for android development.My arraylist is declared like this-
var day1: ArrayList<DietPlanDetailModel>? = null
Now I am trying to access an element by its position
val dietPlan= day1[position]
but i am getting below compile time error-
Only safe or non null assserted calls are allowed on a nullable receiver type of arraylist
Why am i getting this error and how can i resolve it?
The problem is, that you defined the ArrayList
as nullable
. You have two options here:
nullable
(this depends on your code):var day1: ArrayList<DietPlanDetailModel> = ArrayList()
val dietPlan= day1?.get(position)
As defined, day1
can be null
but you're invoking a function by doing []
, which is basically the same as calling day1.get(index)
.
This can throw a NullpointerException
, which the Kotlin compiler tries to prevend. Thus, only safe calls like this are allowed: day1?.get()
.
You told compiler that your variable can be null (and assigned null to it).
day1[position]
is essentially day1.get(position)
which will crash with NPE if day1
is null
-> null.get(position)
If you can guarantee that day1
will be initialized id recommend lateinit
or just straight up assigning new Arraylist with declaration. Of course, simple day1?.get(position)
works fine.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With