首页 > 解决方案 > 如何修复 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
    }
}

标签: androidandroid-studiokotlinandroid-arrayadapter

解决方案


我认为这是因为“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())

我建议始终使用安全的方式!


推荐阅读