2014-04-13 116 views
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, null); 
mCursor.moveToLast(); 

这个伟大的工程,除了它似乎返回基于在创建时并没有按日期和时间的日历事件。例如,如果我创建了2012年12月25日的新活动,它将显示为最后一个结果。

我的最终目标是,我想找到在当前时间之前开始的第一个事件。例如,如果现在是上午8点,我想查找上午8点之前开始的第一个事件。然后我想查看该事件的持续时间,看看它是否是当前正在进行的事件。

有没有一种简单的方法可以返回按日期和时间排序的查询,还是需要在查询结果后执行排序?更好的是,有没有简单的方法在当前时间之前找到第一个事件?

回答

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(); 
+0

谢谢,但它并没有像' “DESC”'。我拿出来,根据开始时间排序。 – Jack

+0

所以你可以创建从光标日期收集和使用Collections.sort() –

+0

Collections.sort(dateList,new Comparator (){ public int compare(Date date1,Date date2){ return date1.after(date2); } }); –

0

另一种方式

Collections.sort(dateList, new Comparator<Date>(){ 
      public int compare(Date date1, Date date2){ 
      return date1.after(date2); 
     } 
     });