2017-10-15 222 views
0

我是kotlin的新手。我用下面的代码在我的适配器:未解决的参考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已经在适配器类被声明,但是当我在另一个类访问他们给这个错误(这是适配器类中定义):

未解决的引用:变量名

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

回答

3

在科特林阅读,你可以直接从嵌套类访问外部类的成员。

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

class OuterClass{ 

    var name="john" 

    inner class InnerClass{ 

     //.... 
    } 

} 

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

您还可以查看同此链接https://stackoverflow.com/a/46730214/4083237