android - 如何修复 ArrayAdapter 中的类型不匹配?
问题描述
我不知道如何修复 arrayadapter 参数的这个错误,它显示了这个错误:
Type mismatch. Required:(Mutable)List<TypeVariable(T)!> Found: ArrayList<String!>?
只有当我将字符串的 ArrayList 从主要活动转移到另一个活动时才会发生这种情况。
class playerList2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_player_list3)
var intent = intent
var liste = intent.getStringArrayListExtra("players")
val adapt = ArrayAdapter(this,android.R.layout.simple_list_item_1,liste)
listView.adapter = adapt
}
}
解决方案
我认为这是因为“liste”可能为空,看看最后的“?” ArrayList<String!>?适配器需要一个不可为空的列表,您可以先检查 ArrayList 是否不为空,然后使用它,或者,如果您确定该数组将始终带来信息,则使用以下简单方法:
val adapt = ArrayAdapter(this, android.R.layout.simple_list_item_1, liste!!)
安全的方法是:
liste?.let{
val adapt = ArrayAdapter(this, android.R.layout.simple_list_item_1, it)
}
或者,正如@cactustictacs 所指出的,这将是最正确的方法:
val adapt = ArrayAdapter(this, android.R.layout.simple_list_item_1, liste ?: emptyList())
我建议始终使用安全的方式!
推荐阅读
- postgresql - 无法启动 PostgreSQL
- python - 无法使用 pyenv -Build Failed OSX 错误安装 python 3.6.8
- powershell - Powershell 将文本添加到 SP2013 站点的主页
- visual-studio - 如何在 Visual Studio 2019 IDE 中删除垂直窗口拆分?
- bootstrap-4 - 使引导切换工作需要什么
- symfony - 当抽象超类实体中存在多对多、自引用关系时,Api 平台中出现“无法生成 IRI”错误
- python - 芹菜:损坏的状态有效载荷。可能的原因?装饰__call__()方法的原因?
- sql - 将 Rows 转置为 Column 。SQL Server 中的 2 个 Varchar 列
- protractor - 如何在 webdriverIO(或量角器)conf 文件中使用 edgeOptions args 来加载扩展?对于新的边缘驱动程序 (81.xx)
- android - Android Sync Manager 和 Work Manager 的区别