android - 无法从内部类 : Kotlin android 访问变量

标签 android class kotlin

我是 Android 中 Kotlin 开发的新手。在这里,我试图从它的内部类访问一个类中定义的变量,如下所示。

class MainActivity : AppCompatActivity() {

    var frags: MutableList<Fragment> = mutableListOf()

//.............onCreate and other methods ....

    internal class CustAdapter(var arrayList: ArrayList<NavigationData>) : RecyclerView.Adapter<CustAdapter.MyViewHolder>() {
    override fun onBindViewHolder(holder: MyViewHolder?, position: Int) {
        holder!!.bindItems(arrayList[position])
    }

    override fun getItemCount(): Int {
        return arrayList.size
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustAdapter.MyViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.navigation_item, parent, false)
        return MyViewHolder(v)
    }

    class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bindItems(data: NavigationData) {


            itemView.setOnClickListener {
                   frags.add(BoardFrag()) ///// here i'm getting error "unresolved symbol"

            }
        }
    }
}    
}

内部类 MyViewHolder 不允许我访问外部范围的任何变量。

即使我无法访问从 导入的 View ID 在内部类方法中导入 kotlinx.android.synthetic.main.activity_main.*

我能够在 java 中以这种方式访问​​变量,但我已经阅读了许多关于 stackoverflow 的问题,但我还没有得到答案。

最佳答案

您应该在适配器中使用内部修饰符。

这个修饰符使得内部类可以访问外部类的成员

引用:https://kotlinlang.org/docs/reference/nested-classes.html

关于android - 无法从内部类 : Kotlin android 访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46376108/

相关文章:

ios - 如何在实例方法中访问类方法变量或对两者使用公共(public)变量?

java - 在 Java 中包装 C++ 模块

Kotlin 内联扩展属性

Kotlin:为什么使用抽象类(与接口(interface)相比)?

android - 为什么当方向为纵向时,android 的 uiautomator 无法在 ListView 中找到元素?

android - Xamarin.Android:在 SMS Delivered Broadcast Receiver 中检测 SMS

android - 为windows或linux系统开发远程桌面连接android应用程序

java - 父类(super class)构造函数实际上指的是什么?类或该类的对象(或两者都不是?)

Android:将静态标题添加到 ListActivity 的顶部

c++ - 类模板实例化为类型模板参数,语法?