2014-04-13 4 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

아마도 this?

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, 새 비교 자 () public int compare (날짜 date1, 날짜 date2) { return date1.after (date2); } }); –

0

또 다른 방법

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