未解决的参考kotlin变量

时间:2017-10-15 10:26:17

标签: android kotlin android-adapter

我是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) }
            )
        }

    }

    ...
    ...
}

变量onClickListenerholderView已在Adapter类中声明,但在我在另一个类(在Adapter类中定义)中访问它时会出现此错误:

  

未解析的参考:variable_name

谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:4)

在Kotlin中,您可以直接从嵌套类访问外部类的成员。

为了访问外部类成员,您需要将您的类设置为 inner 类,如下面的snippt所示。

class OuterClass{

    var name="john"

    inner class InnerClass{

       //....
    }

}

所以,你需要在这里定义 MyViewHolder 内部类MyViewHolder

您也可以在此链接https://stackoverflow.com/a/46730214/4083237

上查看相同内容

答案 1 :(得分:1)

嵌套的分类无法访问外部类成员

让您的MyViewHolder成为inner课程。

在此处阅读更多https://kotlinlang.org/docs/reference/nested-classes.html