我上了这个课:
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
对象?
答案 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