繁体   English   中英

如何在 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 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM