如何调用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() 
  • 用Maven减少为Kotlin配置编译环境的时间
  • 创建一个活动登录
  • RecyclerView:获取KOTLIN中的最后一个项目的位置
  • 通过动态分派委派派生类方法
  • “对象”不是这个域的模式的一部分
  • 用Kotlin创建自定义匕首2范围
  • Spring在kotlin中注入通用接口实现列表
  • 在Kotlin注释参数中使用一个java常量
  • 如何在Kotlin for Android上使用“setTextColor(hexaValue)”,
  • Kotlin通用范围为Class
  • Gradle同步失败:无法findorg.jetbrains.kotlin(无意使用Kotlin)
  • Kotlin language will be the best programming language for Android.