日历,检查之前是否有事件"给定的"日期

时间:2015-09-16 10:50:16

标签: android date android-calendar

我的应用中有一个界面,可以从给定的日期范围加载Android日历的事件。

"返回日期" 按钮,允许用户过去一个月导航(以获取自该日期以来的事件)。

这是我在两个日期之间获取事件的代码:

private List<CalendarEvent> getEventsFromCalendar(Date dateSince, Date dateUntil) {
    try {
        ArrayList<CalendarEvent> list = new ArrayList<CalendarEvent>();
        String[] projections = { CalendarContract.Events._ID, CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART};
        String cond = CalendarContract.Events.DTSTART+" >= "+dateSince.getTime();
        if(dateUntil != null){
            cond += " AND "+CalendarContract.Events.DTSTART+" < "+dateUntil.getTime();
        }
        Cursor c = this.getActivity().getContentResolver().query(Constants.CALENDAR_EVENTS_URI, projections, cond, null, CalendarContract.Events.DTSTART);
        if(c!=null){
            while (c.moveToNext()) {
                int id = c.getInt(c.getColumnIndex(CalendarContract.Events._ID));
                String title = c.getString(c.getColumnIndex(CalendarContract.Events.TITLE));
                Date start = new Date(c.getLong(c.getColumnIndex(CalendarContract.Events.DTSTART)));
                CalendarEvent event = new CalendarEvent(id, title, start);
                list.add(event);
            }
            c.close();

        }
        return list;
    } catch (Exception e) {
        logger.error(e.getMessage());
        return new ArrayList<>();
    }
}

我的问题:

我希望在过去没有事件时禁用&#34;返回日期&#34; 按钮(dateSince之前没有其他事件)。

我的第一个念头:

每当我调用getEventsFromCalendar()方法时,我会使用条件query另一个 CalendarContract.Events.DTSTART+" < "+dateSince.getTime();来检查过去是否有更多事件。因此,如果我没有得到任何结果,我会禁用我的按钮。

但我不想加载所有过去的事件,只是为了检查它们的存在。

问题:

  • 是否有更好的解决方案来检查在给定日期之前Calendar中是否有事件(换句话说,事件在给定日期之前开始)?

  • 是否可以从Calendar按组获取活动?

例如:获得前10个事件(从第1个到第11个),然后是接下来的10个事件(从第12个到第21个)......

提前致谢!

0 个答案:

没有答案