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

Android中向Adapter添加列表时出现类型不匹配错误

问题原因与解决办法

错误核心

报错的本质是类型不匹配:

  • 你传给adapter.submitList()的是MutableList<String>(仅包含歌曲名称的字符串列表)
  • 但你的Adapter要求传入的是(Mutable)List<SongInfo!>?(SongInfo类型的对象列表)

你的代码里,songResources.keys.toMutableList()获取的是HashMap的键集合——也就是你定义的歌曲名字符串("Dark Star"、"What's Mine"),这和Adapter期望的SongInfo对象类型完全不符,所以触发类型错误。

解决思路

方案1:传递Adapter需要的SongInfo对象列表(推荐)

直接获取HashMap中的SongInfo对象集合,转成列表后传给Adapter:

private val repository = Repository()
private var songResources = repository.fetchData()
// 取values而非keys,得到SongInfo类型的集合
private var songList = songResources.values.toMutableList()

adapter.submitList(songList)

方案2:适配Adapter为接收字符串列表

如果你的业务只需要展示歌曲名称,可修改Adapter的泛型参数,使其支持接收List<String>。比如将RecyclerView Adapter的泛型对应数据部分改为String(具体修改需结合你的Adapter实现)。

若不想修改Adapter,也可以将歌曲名包装成SongInfo对象(不推荐,属于冗余操作):

private var songList = songResources.keys.map { songName ->
    SongInfo(songName, 0, "") // 根据实际需求补全默认参数
}.toMutableList()

adapter.submitList(songList)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:40:32