Solución:
En Kotlin, las clases anidadas no pueden acceder a la instancia de clase externa de forma predeterminada, al igual que anidadas static class
es no puede en Java.
Para hacer eso, agregue el inner
modificador a la clase anidada:
class MainFragment : Fragment() {
// ...
inner class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() {
// ...
}
}
Tenga en cuenta que un inner
La clase contiene una referencia a su instancia de clase contenedora, lo que puede afectar la vida útil de esta última y potencialmente conducir a una pérdida de memoria si el inner
La instancia de clase se almacena globalmente.
Ver: Clases anidadas en el idioma de referencia
En Kotlin, hay 2 tipos de clases anidadas.
- Clase anidada
- clase interna
Las clases anidadas no pueden acceder al miembro de la clase externa.
Si desea acceder al miembro de la clase externa en la clase anidada, debe definir esa clase anidada como clase interna.
class OuterClass{
var name="john"
inner class InnerClass{
//....
}
}