Я разработал виджет «Календарь» на Java (особенно для разработки BlackBerry). Пользователь может просматривать все дни в текущем месяце, а также перемещаться вперед / назад в месяцах / годах.
Когда я рисую свой календарь (в формате таблицы), я хочу изменить цвет любых дней, которые на X дней раньше текущей даты. В настоящее время я могу проверить это ТОЛЬКО, если отображаемый на экране календарь совпадает с текущим месяцем:
if (calendarMonth == currentMonth) {
for (int i = 1; i <= (NUM_DAYS_IN_MONTH); i++) {
if (i > currentDay + Constants.CALENDAR_DAYS_IN_ADVANCE) {
System.out.println("VALID: " + i);
}
}
}
Но у меня возникают проблемы при кодировании решения, когда показанный календарь отличается от текущего месяца. Например, сегодня 26 января, поэтому в январском календаре все январские дни отображаются серым цветом. Когда пользователь меняет месяц на февраль, следующие дни должны быть серыми:
Constants.CALENDAR_DAYS_IN_ADVANCE = 14;
1/26/2011 - 2/9/2011
Любые дни после этого диапазона будут черного цвета. В общем, я хочу написать функцию, которая будет принимать два объекта java.util.Calendar (показывается активный календарь и календарь на текущую дату), а функция будет возвращать массив дат в диапазоне CURRENT DATE - CALENDAR_DAYS_IN_ADVANCE.
Мне также нужно помнить следующее:
1) Я не могу сравнивать даты с функциями java.util.Calendar.add () или java.util.Calendar.subtract (), так как java для BlackBerry ограничен
2) Это должно работать и в разные годы, например, декабрь 2010 - январь 2011
Кто-нибудь может помочь с логикой?
Спасибо!