2017-10-15 241 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