нерешенная ссылка kotlin variable

Я новичок в kotlin. Я использую следующий код в своем адаптере:

class TravelListAdapter(private var context: Context) : RecyclerView.Adapter<TravelListAdapter.MyViewHolder>() { lateinit var onClickListener: TravelListAdapterListener lateinit var holderView: View interface TravelListAdapterListener { fun onClickListener(v: View, position: Int) } class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private lateinit var txtLabel: TextView fun MyViewHolder(view: View) { holderView = view // holderView shows error // in line below, holderView and onClickListener shows error holderView.setOnClickListener( View.OnClickListener { v -> onClickListener.onClickListener(v, adapterPosition) } ) } } ... ... } 

Переменные onClickListener и holderView объявлены в классе Adapter, но дают эту ошибку, когда я обращаюсь к ним в другом классе (который определен внутри класса Adapter):

Неразрешенная ссылка: variable_name

Может ли кто-нибудь сказать мне, что я делаю неправильно?

    В Kotlin вы можете напрямую обращаться к члену внешнего класса из вложенного класса.

    Чтобы получить доступ к внешним членам класса, вам необходимо сделать свой класс внутренним классом, как указано ниже в snippt.

     class OuterClass{ var name="john" inner class InnerClass{ //.... } } 

    Итак, здесь вам нужно определить класс MyViewHolder для внутреннего класса MyViewHolder

    Вы также можете проверить это по этой ссылке https://stackoverflow.com/a/46730214/4083237

    Вложенные классы не имеют доступа к внешним членам класса .

    Сделайте свой MyViewHolder inner классом.

    Подробнее здесь https://kotlinlang.org/docs/reference/nested-classes.html

    Intereting Posts
    Динамические формы Android Расширение Kotlin Any? .toString () Kotlin: Как я могу использовать делегированные свойства в Java? Джессинская десериализация Kotlin JS Как преобразовать массив String в массив Int в Kotlin? Как сделать выражение регулярного выражения с первой вероятностью. (Котлин) Kotlin – Сортировка MutableList на основе свойства объекта Напиши Скопируемый интерфейс более элегантный, чем в Java Gradle не будет импортировать зависимость bintray, но не вызывает никакой ошибки Неиспользуемые аргументы при уничтожении объекта в Котлине Могу ли я создать KType из reified T Почему == и равные производят разные результаты? Как проверить общий тип в Kotlin Могу ли я использовать имя лямбда в качестве параметра, переданного «вне круглых скобок»? Исключение: blockingConnect не следует вызывать в потоке пользовательского интерфейса, несмотря на то, что я добавил другой поток