如何修复 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())
我建议始终使用安全方式!
我不知道如何修复 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
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())
我建议始终使用安全方式!