如何调用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 

如何解决?

2 Solutions collect form web for “如何调用Kotlin中的ArrayAdapter.addAll方法?”

ArrayAdapter有两个addAll方法:

  1. ArrayAdapter.addAll(T ... items)
  2. public void addAll(@NonNull Collection< ? extends T> 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() 
  • 确保kotlin方法是静态的,顶级的或注释的@JvmStatic
  • Kotlin`shl`不工作
  • 如何转换到Kotlin的固定(2)
  • Getter在Kotlin的无限递归
  • Android活动重新崩溃的应用程序“碎片不再存在”Kotlin
  • ArrayList,IntArray和Array 不同之处
  • 将java转换为粘贴的kotlin
  • 如何在Kotlin中声明和初始化MutableSet?
  • Kotlin - 为什么这个函数不适合尾递归?
  • 当使用Maven编译时,类路径条目指向一个不存在的位置警告
  • AccessToken.getCurrentAccessToken()总是在Kotlin中返回null
  • Kotlin language will be the best programming language for Android.