【问题标题】:unresolved reference kotlin variable [duplicate]未解决的参考kotlin变量[重复]
【发布时间】:2018-03-27 00:19:06
【问题描述】:

我是 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 已经在适配器类中声明,但是当我在另一个类(在适配器类中定义)访问它们时出现此错误:

未解析的引用:变量名

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

【问题讨论】:

    标签: android kotlin android-adapter


    【解决方案1】:

    嵌套类无权访问外部类成员

    将您的 MyViewHolder 设为 inner 类。

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

    【讨论】:

      【解决方案2】:

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

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

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

      所以,这里你需要定义你的 MyViewHolderinner class MyViewHolder

      您也可以在此链接https://stackoverflow.com/a/46730214/4083237上查看相同内容

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2018-10-16
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多