如何修复 ArrayAdapter 中的类型不匹配?

How to fix type mismatch in ArrayAdapter?

我不知道如何修复 arrayadapter 参数的这个错误,它向我显示了这个错误:

Type mismatch. Required:(Mutable)List<TypeVariable(T)!> Found: ArrayList<String!>?

只有当我将字符串的 ArrayList 从主 activity 转移到另一个时才会发生。

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 的? 适配器需要一个不可为 null 的列表,您可以先检查 ArrayList 是否不为 null 然后使用它,或者,如果您确定数组将始终带来信息,则使用此简单方法:

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())

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