[英]How to use a property of a outer class in inner class in Kotlin?
我有这个 class:
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
object 在外部 class 中定义,它也不能在内部 class 中使用。 如何使用 onClick function 中的items
onClick
?
您需要将 ItemViewHolder 标记为inner
class
inner class ItemViewHolder
有关https 的更多信息://kotlinlang.org/docs/reference/nested-classes.html
只需使用inner
关键字
import android.view.View
import androidx.recyclerview.widget.RecyclerView
class ItemsAdapter(
val items: List<Item> = mutableListOf()
) {
inner class ItemViewHolder(private val itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
override fun onClick(v: View) {
val clickedItem = items.get(adapterPosition)
}
}
}
如果要访问内部 class 中的外部 class 的成员,则必须使用inner
关键字标记内部 class。
将您的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)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.