我正在尝试返回按日期和时间排序的Calendar事件查询,以便我可以遍历它们。我这样问过它:
private Cursor mCursor = null;
private static final String[] COLS = new String[]{CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART, CalendarContract.Events.AVAILABILITY};
mCursor = getContentResolver().query(CalendarContract.Events.CONTENT_URI, COLS, null, null, null);
mCursor.moveToLast();
这很好用,除非它似乎根据创建时间而不是按日期和时间返回日历事件。例如,如果我在2012年12月25日创建一个新事件,它将显示为最后一个结果。
我的最终目标是,我希望找到在当前时间之前开始的第一个事件。例如,如果它当前是上午8:00,我想找到在上午8:00之前开始的第一个事件。我想检查该事件的持续时间,看看它是否是当前正在进行的事件。
是否有一种简单的方法可以返回按日期和时间排序的查询,还是在查询结果后必须实现排序?更好的是,有一种简单的方法可以在当前时间之前找到第一个事件吗?
答案 0 :(得分:1)
也许这个?
private Cursor mCursor = null;
private static final String[] COLS = new String[]{CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART, CalendarContract.Events.AVAILABILITY};
mCursor = getContentResolver().query(CalendarContract.Events.CONTENT_URI, COLS, null, null, CalendarContract.Events.DTSTART + " ASC");
mCursor.moveToLast();
答案 1 :(得分:0)
另一种方式
Collections.sort(dateList, new Comparator<Date>(){
public int compare(Date date1, Date date2){
return date1.after(date2);
}
});