作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个非常简单的列表(因此没有必要创建一个扩展 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
中的方法:
ArrayAdapter.addAll(T ... items)
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/
我是一名优秀的程序员,十分优秀!