我正在创建事件应用程序,其中列出了所有事件。
我有一个问题,当活动结束时,它仍然会停留,因为如果下一个活动是在一周之后,则按时间排序。像这样:
因此,结束的事件需要记录下来,并按日期排序。
我该怎么做?
我试图按日期和布尔值分别排序,但失败了。 还是我需要为结束事件和即将发生的事件创建两个数组列表?
如果有人知道该怎么做,请告诉我,您保存我的一天。
我的代码,现在排序:
Collections.sort(eventsList, new Comparator<TimetableEvent>() {
@Override
public int compare(TimetableEvent arg0, TimetableEvent arg1) {
SimpleDateFormat format = new SimpleDateFormat(
"dd.MM.yyyy' klo 'HH.mm");
int compareResult = 0;
try {
Date arg0Date = format.parse(arg0.getDateTime());
Date arg1Date = format.parse(arg1.getDateTime());
compareResult = arg0Date.compareTo(arg1Date);
} catch (ParseException e) {
e.printStackTrace();
compareResult = arg0.getDateTime().compareTo(arg1.getDateTime());
}
return compareResult;
}
});
答案 0 :(得分:0)
只需修改您的compare()
方法,以便如果一个事件结束而另一个没有结束,则返回该事件而不比较日期:
@Override
public int compare(TimetableEvent arg0, TimetableEvent arg1) {
SimpleDateFormat format = new SimpleDateFormat(
"dd.MM.yyyy' klo 'HH.mm");
int compareResult = 0;
if (arg0.isOver() && !arg1.isOver()) {
return 1;
}
if (!arg0.isOver() && arg1.isOver()) {
return -1;
}
try {
Date arg0Date = format.parse(arg0.getDateTime());
Date arg1Date = format.parse(arg1.getDateTime());
compareResult = arg0Date.compareTo(arg1Date);
} catch (ParseException e) {
e.printStackTrace();
compareResult = arg0.getDateTime().compareTo(arg1.getDateTime());
}
return compareResult;
}