J'ai une liste très simple (il n'est donc pas nécessaire de créer un adaptateur personnalisé qui étend BaseAdapter). J'utilise un ArrayApdater pour implémenter cela.
Lorsque je veux changer la valeur de l'adaptateur, une erreur de construction indique qu'il y a deux méthodes allAll et kotlin ne sait pas laquelle utiliser.
Voici l'exemple de 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
Le message d'erreur est:
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
Comment le résoudre?
Il existe deux addAll
méthodes pour ArrayAdapter
:
ArrayAdapter.addAll(T ... items)
public void addAll(@NonNull Collection<? extends T> collection)
.donc le compilateur est incapable de déduire quelle méthode vous voulez appeler, car Any
c'est un peu comme Object
en Java.
Au lieu de: val list = Collections.emptyList<Any>()
utiliser val list = Collections.emptyList<String>()
.
Et changer ArrayAdapter<Any>
pourArrayAdapter<String>
L'erreur doit être résolue.
J'espère que cela aide.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots