如何在同一比较中同时比较Date和Boolean并在Android中使用true booleans和false upper进行比较?

时间:2018-10-24 16:06:49

标签: android sorting arraylist

我正在创建事件应用程序,其中列出了所有事件。

我有一个问题,当活动结束时,它仍然会停留,因为如果下一个活动是在一周之后,则按时间排序。像这样: enter image description here

因此,结束的事件需要记录下来,并按日期排序。

我该怎么做?

我试图按日期和布尔值分别排序,但失败了。 还是我需要为结束事件和即将发生的事件创建两个数组列表?

如果有人知道该怎么做,请告诉我,您保存我的一天。

我的代码,现在排序:

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;
                }
            });

1 个答案:

答案 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;
}