如何调用Kotlin中的ArrayAdapter.addAll方法?

我有一个非常简单的列表(所以没有必要创建一个扩展BaseAdapter的自定义适配器)。 我使用ArrayApdater来实现这一点。

当我想改变适配器的值时,有一个构建错误说有两个allAll方法,kotlin不知道要使用哪一个。

以下是示例代码:

val list = Collections.emptyList() // Just for sample. val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, list) // This line is OK // Some work later adapter.clear() adapter.addAll(list) // Here's the error 

错误消息是:

  Error:(79, 35) Overload resolution ambiguity: public open fun addAll(p0: (MutableCollection..Collection?)): Unit defined in android.widget.ArrayAdapter public open fun addAll(vararg p0: Any!): Unit defined in android.widget.ArrayAdapter 

如何解决?

ArrayAdapter有两个addAll方法:

  1. ArrayAdapter.addAll(T ... items)
  2. public void addAll(@NonNull Collection collection)

所以编译器无法推断你想调用哪一种方法,因为Any有点像Java中的Object

而不是: val list = Collections.emptyList()使用val list = Collections.emptyList()

并将ArrayAdapter更改为ArrayAdapter

错误应该解决。

希望能帮助到你。

你应该使用String而不是Any

你的代码应该是这样的。

 val list = Collections.emptyList() // Just for sample. val adapter = ArrayAdapter(activity, R.layout.simple_spinner_item, list) // This line is OK // Some work later adapter.clear() adapter.addAll()