我收到以下错误
无法恢复活动{com.xxx.yyy.zzz.HomeActivity}:java.lang.IllegalArgumentException:比较方法违反了其一般约定!
我正在为字符串处理空值情况,即使出现此错误也是如此。关于可能出问题的任何提示。下面的代码
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;
}
这就是我使用比较器的方式
if (conversationListAdapter != null) {
Collections.sort(this.list,new ConversationComparer());
conversationListAdapter.notifyDataSetChanged();
}
最佳答案
我唯一看到的问题是您没有正确处理x.getLastMessageDate()
和y.getLastMessageDate()
都是null
的情况。
我认为,如果将此行添加到方法的开头,则它符合合同要求。
if (x.getLastMessageDate() == null && y.getLastMessageDate() == null)
return 0;