[英]How to use a property of a outer class in inner class in Kotlin?
I have this class:我有这个 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)
}
}
}
Even if items
object is defined in the outer class, it cannot be used in the inner class.即使items
object 在外部 class 中定义,它也不能在内部 class 中使用。 How can I use the items
object in the onClick
function?如何使用 onClick function 中的items
onClick
?
You need to mark ItemViewHolder as an inner
class您需要将 ItemViewHolder 标记为inner
class
inner class ItemViewHolder
More info on https://kotlinlang.org/docs/reference/nested-classes.html有关https 的更多信息://kotlinlang.org/docs/reference/nested-classes.html
Just use inner
Keyword只需使用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)
}
}
}
If you want to access the members of an outer class in the inner class, then you have to mark the inner class with inner
keyword.如果要访问内部 class 中的外部 class 的成员,则必须使用inner
关键字标记内部 class。
Mark your ItemViewHolder
as inner
and everything should work fine.将您的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.