如何在Kotlin的内部类中使用外部类的属性?

时间:2020-06-11 12:29:25

标签: android kotlin inner-classes

我上了这个课:

class ItemsAdapter(
    val items: List<Item> = mutableListOf()
) {
    class ItemViewHolder(private val itemView: View) : ViewHolder(itemView), View.OnClickListener {
        override fun onClick(v: View) {
            val clickedItem = items.get(adapterPosition)
        }
    }
}

即使items对象在外部类中定义,也不能在内部类中使用。如何在items函数中使用onClick对象?

3 个答案:

答案 0 :(得分:4)

您需要将ItemViewHolder标记为inner

inner class ItemViewHolder

有关https://kotlinlang.org/docs/reference/nested-classes.html的更多信息

答案 1 :(得分:2)

如果要访问内部类中外部类的成员,则必须用inner关键字标记内部类。

将您的ItemViewHolder标记为inner,一切正常。

class ItemsAdapter(
    val items: List<Item> = mutableListOf()
) {
    inner class ItemViewHolder(private val itemView: View) : ViewHolder(itemView), View.OnClickListener {
        override fun onClick(v: View) {
            val clickedItem = items.get(adapterPosition)
        }
    }
}

答案 2 :(得分:2)

只需使用Gradle plugin 3.6.3 -> 4.0.0 Gradle: 5.6.4 -> 6.1.1 关键字

inner