ich die folgenden Fehler bekommenVergleichsmethode seiner allgemeinen Vertrag verstößt auch nach null Überprüfung
Unable Aktivität wieder aufnehmen {com.xxx.yyy.zzz.HomeActivity}: java.lang.IllegalArgumentException: Vergleichsmethode gegen seine Generalvertrag!
Ich handle Null Fälle für die Zeichenfolge, auch wenn dieser Fehler kommt. Irgendwelche Hinweise darauf, was falsch sein könnte. Code unten
public class ConversationComparer implements Comparator<Conversation> {
@Override
public int compare(Conversation x, Conversation y) {
if (x.getLastMessageDate() == null) {
return 1;
}
if (y.getLastMessageDate() == null) {
return -1;
}
return y.getLastMessageDate().compareTo(x.getLastMessageDate());
}}
public java.util.Date getLastMessageDate() {
return lastMessageDate;
}
Dies ist, wie ich den Komparator verwenden
if (conversationListAdapter != null) {
Collections.sort(this.list,new ConversationComparer());
conversationListAdapter.notifyDataSetChanged();
}
getlastmessage ist java.util.Date – ila
Dies ist nicht antisymmetrisch. Angenommen, 'x == null' und' y.getLastMessageDate() == null'. Dann vergleiche (x, y) == 1 und vergleiche (y, x) == 1 auch. –
In diesem Fall glaube ich nicht, dass Ihre Ausnahme von der compareTo-Methode kommt. Date.compareTo wirft keine InvalidArgumentException. Vielleicht liefern Sie den gesamten Stack-Trace. – Till