J'essaie de trier un ArrayList
en Java dans une application Android, mais cette exception est bizarre.
Code:
eventsList.sort(new Comparator<Event>() {
@Override
public int compare(Event event, Event t1) {
return event.getEventStartDate().compareTo(t1.getEventStartDate());
}
});
Exception:
Java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'Java.util.List' appears in /system/framework/core-libart.jar)
ArrayList#sort()
a été ajouté à l'API de niveau 24 et les temps d'exécution inférieurs à l'API de niveau 24 n'ont pas cette méthode. On dirait que votre compileSdkVersion
est à 24 alors vous avez le code à compiler en premier lieu.
Utilisez Collections.sort(list, comparator)
à la place.
Et si tu essayais
Collections.sort(eventsList, new Comparator...
Autant que je sache, ArrayList
n'a pas de méthode sort
.
La liste n'a pas sa propre méthode de tri, vous devez appeler
Collections.sort()
comme la méthode sur la liste. Si cela retourne un ClassCastError, cela signifie que la liste contient des éléments non triables. Je pense que cela devrait résoudre le problème, mais sans code complet, il est difficile de vérifier.
La méthode ArrayList.sort () a été ajoutée plus tard, c'est pourquoi elle ne fonctionne pas. Nous pouvons mettre à jour la version Java (1.8) ou utiliser la méthode ci-dessous.
Collections.sort(eventList, new Comparator<Event>() {
@Override
public int compare(Event event, Event t1) {
return event.getEventStartDate().compareTo(t1.getEventStartDate());
}
});