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



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

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

在文件的顶层。

最新更新