繁体   English   中英

在Kotlin中,访问RecyclerView适配器的内部类中的外部类成员的最佳方法是什么?

[英]What is the best way to access members of outer class in the inner class of RecyclerView adapter in Kotlin?

我正在Android应用程序中创建第一个Kotlin类。 通常,出于记录目的,我有一个名称为TAG的常量。 我在RecyclerView适配器中将其定义为:

class MyAdapter(private val dataList: ArrayList<MyData>): RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    private val TAG: String? = MyAdapter::class.simpleName
    .
    .
    .

    class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
        fun bindData(){
            //some statements
        }

        override fun onClick(p0: View?) {
           //I want to use the above defined TAG here as I would do in Java:
           // Log.d(TAG, "");
        }
    }
}

我无法在onClick()中访问变量TAG

您可以将ViewHolder类设置为inner

使用companion object

class MyAdapter(private val dataList: ArrayList<String>) :
    RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
        fun bindData() {
            //some statements
        }

        override fun onClick(p0: View?) {
            Log.d(TAG, "")
        }
    }

    companion object {
        val TAG: String? = MyAdapter::class.simpleName
    }

}

你也可以放

private val TAG: String? = MyAdapter::class.simpleName

在文件的顶层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM