如何在 Kotlin 的内部 class 中使用外部 class 的 属性?
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
对象在外层class中定义,也不能在内层class中使用。如何在 onClick
函数中使用 items
对象?
您需要将 ItemViewHolder 标记为 inner
class
inner class ItemViewHolder
有关 https://kotlinlang.org/docs/reference/nested-classes.html
的更多信息
如果你想在内部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)
}
}
}
只需使用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 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
对象在外层class中定义,也不能在内层class中使用。如何在 onClick
函数中使用 items
对象?
您需要将 ItemViewHolder 标记为 inner
class
inner class ItemViewHolder
有关 https://kotlinlang.org/docs/reference/nested-classes.html
的更多信息如果你想在内部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)
}
}
}
只需使用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)
}
}
}