如何调用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
如何解决?
ArrayAdapter
有两个addAll
方法:
-
ArrayAdapter.addAll(T ... items)
-
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()