android - 如何在 Kotlin 中调用 ArrayAdapter.addAll 方法?

标签 android kotlin

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

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

示例代码如下:

    val list = Collections.emptyList<Any>() // Just for sample.
    val adapter = ArrayAdapter<Any>(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<out Any!>..Collection<Any!>?)): Unit defined in android.widget.ArrayAdapter
    public open fun addAll(vararg p0: Any!): Unit defined in android.widget.ArrayAdapter

如何解决?

最佳答案

有两个addAll ArrayAdapter 中的方法:

  1. ArrayAdapter.addAll(T ... items)
  2. public void addAll(@NonNull Collection<? extends T> collection) .

因此编译器无法推断您要调用哪一个方法,因为 Any有点像Object在 Java 中。

代替: val list = Collections.emptyList<Any>()使用 val list = Collections.emptyList<String>() .

并更改ArrayAdapter<Any>ArrayAdapter<String>

应该解决错误。

希望对您有所帮助。

关于android - 如何在 Kotlin 中调用 ArrayAdapter.addAll 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672660/

相关文章:

android - 使用 JetpackCompose LazyColumn,Compose-Espresso 链接变为空闲超时

kotlin - 如何修复 "Unresolved reference. None of the following candidates is applicable because of receiver type mismatch"

kotlin - 使用Kotlin Flow带下一个值的zip

java - Sqlite 将文本转换为十进制?

java - Gradle Android 构建项目错误 : Could not find meta-data resource

java - 运行 android studio 项目时出现由 OutOfMemoryException 引起的致命异常

split - 如何拆分字符串并在 Kotlin 中拆分部分之间种植分隔符?

android - 错误类型3-错误: Activity 类MainActivity不存在

android - 如何注销 aws cognito - android?

Android Gradle 模块依赖