Согласно документу: При доступе к свойству lateinit до его инициализации выдается специальное исключение, которое четко идентифицирует доступное свойство и тот факт, что оно не было инициализировано.
Чтобы проверить, инициализирована ли переменная lateinit, используйте .isInitialized для ссылки на это свойство:
Я не знаю, почему это вызывает проблему здесь. Я думаю, ваш код в порядке, но я могу дать вам решение вашей проблемы.
В вашем случае вы можете решить вашу проблему двумя способами.
1. Просто добавьте условие if в прослушиватель кликов, чтобы проверить, используется оно или нет.
holder.itemView.setOnClickListener{
//Check whether it is Initialized or not
if(::onItemClickCallback.isInitialized){
onItemClickCallback.onItemClicked(listMotors[holder.adapterPosition])
}
}
ИЛИ
2. удалить латент и сделать его обнуляемым.
//Make it as nullable
private var onItemClickCallback : OnItemClickCallback? = null
holder.itemView.setOnClickListener {
holder.itemView.setOnClickListener {
// add ? for handling nullable
onItemClickCallback?.onItemClicked(listMotors[holder.adapterPosition])
}
}