You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin自定义RecyclerView.Adapter访问数据类变量报错咨询

报错原因

alphabetList是AlphabetData类的实例成员,必须依托类的具体实例才能访问,你直接通过类名AlphabetData调用,自然识别不到这个属性,完全不需要额外写专门的获取函数。

可选解决方法

根据你的实际使用场景选就行:

  • 方案1:字母列表是固定不变的全局常量
    这种场景最匹配你当前的需求,直接把类改成Kotlin单例对象,就能直接用类名访问,写法最简洁:
    package com.example.wordapp.model
    
    // 把class换成object,声明为单例,全局只存在一份实例
    object AlphabetData {
        val alphabetList: List<Char> = ('A'..'Z').toList()
    }
    
    改完之后你原来写的AlphabetData.alphabetList.size可以直接正常运行,不需要改适配器里的调用逻辑。
    如果你不想改成单例,也可以给普通类加伴生对象实现同样的类名访问效果:
    package com.example.wordapp.model
    
    class AlphabetData {
        companion object {
            val alphabetList: List<Char> = ('A'..'Z').toList()
        }
    }
    
  • 方案2:需要实例化多个AlphabetData对象,不同实例存不同的列表内容
    这种情况你在适配器里先创建AlphabetData的实例,再通过实例访问属性即可:
    // 适配器内声明实例
    private val alphabetData = AlphabetData()
    
    override fun getItemCount(): Int {
        return alphabetData.alphabetList.size
    }
    

额外提醒:你提到自己创建的是数据类,但贴出来的代码用的是普通class关键字,不是data class。如果类只用来存这组固定字母,没有其他自定义状态和逻辑,用上面的object单例写法是最合适的,没必要用数据类。

内容的提问来源于stack exchange,提问作者Jaguar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:54:27