Календарь запрос отсортирован по дате и времени
-
21-12-2019 - |
Вопрос
Я пытаюсь вернуть запрос календарных событий, отсортированных по дате и времени, чтобы я мог пройти через них.Я запросил это так:
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();
.
Это работает отлично, за исключением того, что он, кажется, возвращает события календаря на основе, когда он был создан, а не по дате и времени.Например, если я создаю новое событие на 25 декабря 2012 года, он появится как последний результат.
Моя конечная цель - это то, что я хотел бы найти первое событие, которое начинается до текущего времени.Например, если в настоящее время 8:00 утра, я хочу найти первое событие, которое начинается до 8:00 утра.Я хочу, чтобы затем проверить продолжительность этого события, чтобы увидеть, является ли это текущим событием.
Есть ли простой способ вернуть запрос, отсортированный по дате и времени или мне придется реализовать свой вид после запроса результатов?Еще лучше, есть ли простой способ найти первое событие до текущего времени?
Решение
Может быть, это?
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();
. Другие советы
Еще один путь
Collections.sort(dateList, new Comparator<Date>(){
public int compare(Date date1, Date date2){
return date1.after(date2);
}
});
.