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

val adapt = ArrayAdapter(this,android.R.layout.simple_list_item_1,liste!!)

安全的方式是:

liste?.let{
  val adapt = ArrayAdapter(this,it)
}

或者,正如@cactustictacs指出的那样,这将是最正确的方法:

val adapt = ArrayAdapter(this,liste ?: emptyList())

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