В настоящее время я пытаюсь сделать так, что, когда я выбираю день в CalendarView, перечислены все события за этот день. У меня возникли проблемы с тем, чтобы он отображал все события за один день (похоже, что он не работает в 12 утра 11:59 утра?). Вот это то, что у меня есть сейчас.Android CalendarView + Календарь
calenderView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
getEvents(year, month, dayOfMonth);
}
});
и
public void getEvents(int year, int month, int day){
log.logInfo("getting events from " + String.valueOf(year) + "/" + String.valueOf(month) + "/" + String.valueOf(day));
String[] projection = new String[] { CalendarContract.Events.CALENDAR_ID, CalendarContract.Events.TITLE, CalendarContract.Events.DESCRIPTION, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.ALL_DAY, CalendarContract.Events.EVENT_LOCATION };
// 0 = January, 1 = February, ...
Calendar startTime = Calendar.getInstance();
startTime.set(year,month,day, 00, 00);
Calendar endTime= Calendar.getInstance();
endTime.set(year,month,day, 23, 59);
// the range is all data from 2014
String selection = "((" + CalendarContract.Events.DTSTART + " >= " + startTime.getTimeInMillis() + ") AND (" + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + "))";
Cursor cursor = this.getBaseContext().getContentResolver().query(CalendarContract.Events.CONTENT_URI, projection, selection, null, null);
// output the events
if (cursor.moveToFirst()) {
do {
log.logInfo("Title: " + cursor.getString(1));
log.logInfo("Start-Time: " + (new Date(cursor.getLong(3))).toString());
log.logInfo("Location: " + cursor.getString(6));
} while (cursor.moveToNext());
}
log.logInfo("-----------------------");
}
Используя это, если у меня есть event1 от 12 am-11:59am и event2 от 12 pm-11:59pm, только event2 будут перечислены.