我有一个非常简单的列表(因此没有必要创建一个扩展 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
Run Code Online (Sandbox Code Playgroud)
错误信息是:
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
Run Code Online (Sandbox Code Playgroud)
如何解决?
中有两种addAll方法ArrayAdapter:
ArrayAdapter.addAll(T ... items) public void addAll(@NonNull Collection<? extends T> collection)。所以编译器无法推断出你想调用哪一个方法,因为Any有点像ObjectJava。
而不是:
val list = Collections.emptyList<Any>()使用val list = Collections.emptyList<String>().
并更改ArrayAdapter<Any>为ArrayAdapter<String>
错误应该得到解决。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |