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

时间:2018-02-02 07:13:20

标签: android 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

3 个答案:

答案 0 :(得分:2)

您可以将ViewHolder类设置为inner

答案 1 :(得分:1)

使用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
    }

}

答案 2 :(得分:1)

你也可以把

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

在文件的顶层。