fti*_*i93 31 scope class member kotlin
我想从PersonAdapter类访问MainFragment类的成员,但它们都不可用.我试图让这两个类和成员公开和私有,但到目前为止没有任何效果.我想我错过了一些明显的东西,但我无法弄明白.
class MainFragment : Fragment() {
lateinit var personAdapter: PersonAdapter
lateinit var personListener: OnPersonSelected
private var realm: Realm by Delegates.notNull()
lateinit var realmListener: RealmChangeListener<Realm>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val v = inflater.inflate(R.layout.fragment_main, container, false)
return v
}
class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() {
var localPersonList = personList
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindItems(localPersonList[position])
holder.itemView.setOnClickListener {
Toast.makeText(context, "click", Toast.LENGTH_SHORT).show()
//I want to reach personListener from here
}
}
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent!!.context).inflate(R.layout.person_list_item, parent, false)
return ViewHolder(v)
}
}}
Run Code Online (Sandbox Code Playgroud)
hot*_*key 66
在Kotlin中,嵌套类默认情况下不能访问外部类实例,就像static class
Java中的嵌套es 一样.
为此,请将inner
修饰符添加到嵌套类:
class MainFragment : Fragment() {
// ...
inner class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅:语言参考中的嵌套类
在Kotlin中,有两种类型的嵌套类.
不允许嵌套类访问外部类的成员.
如果要在嵌套类中访问外部类的成员,则需要将该嵌套类定义为内部类.
class OuterClass{
var name="john"
inner class InnerClass{
//....
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7692 次 |
最近记录: |