I have a very simple list (so it isn't necessary to create a custom adapter which extends BaseAdapter). I use an ArrayApdater to implements this.
When I want to change the value of the adapter, there's a build error says there's two allAll methods and kotlin don't know which one to use.
Here's the sample code:
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
The error message is :
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
How to solve it?
There are two addAll methods in ArrayAdapter:
ArrayAdapter.addAll(T ... items) public void addAll(@NonNull Collection<? extends T> collection).so compiler is unable to infer which one method you want to call, because Any is somewhat like Object in Java.
Instead of :
val list = Collections.emptyList<Any>() use val list = Collections.emptyList<String>().
And change ArrayAdapter<Any> to ArrayAdapter<String>
Error should be resolved.
Hope it helps.
You should use String instead of Any
Your code should be like this.
val list = Collections.emptyList<String>() // Just for sample.
val adapter = ArrayAdapter<String>(activity, R.layout.simple_spinner_item, list) // This line is OK
// Some work later
adapter.clear()
adapter.addAll()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With