1

How to Change start date and end date of month in calroid calendar lib if i want to modify calendar with shift my month start from 15 jan 2016 to 16 feb 2016.

Dashrath Rathod
  • 508
  • 1
  • 5
  • 15

1 Answers1

3

Hello using following modification in CalendarHelper class you can set start date of month for shift calendar. I am using following library for calendar view https://github.com/roomorama/Caldroid

please modify getFullWeeks method

/** * Retrieve all the dates for a given calendar month Include previous month, * current month and next month. * * @param month * @param year * @param startDayOfWeek : calendar can start from customized date instead of Sunday * @return */

   public static ArrayList<DateTime> getFullWeeks(int month, int year, int startDayOfWeek,int startDayOfMonth, boolean sixWeeksInCalendar) {
            ArrayList<DateTime> datetimeList = new ArrayList<DateTime>();

            int dayCount=startDayOfMonth;

            DateTime firstDateOfMonth = new DateTime(year, month, 1, 0, 0, 0, 0);
            DateTime firstDateOfMonthToSet = new DateTime(year, month, dayCount, 0, 0, 0, 0);

            int daysToAdd=firstDateOfMonth.getNumDaysInMonth()-dayCount;

            DateTime lastDateOfMonth = firstDateOfMonthToSet.plusDays(daysToAdd);
            DateTime lastDateOfMonthTpSet =firstDateOfMonthToSet.plusDays(firstDateOfMonth.getNumDaysInMonth()-1);

            // Add dates of first week from previous month
           // int weekdayOfFirstDate = firstDateOfMonth.getWeekDay();
    //dr
            int weekdayOfFirstDate = firstDateOfMonthToSet.getWeekDay();
            // If weekdayOfFirstDate smaller than startDayOfWeek
            // For e.g: weekdayFirstDate is Monday, startDayOfWeek is Tuesday
            // increase the weekday of FirstDate because it's in the future
            if (weekdayOfFirstDate < startDayOfWeek) {
                weekdayOfFirstDate += 7;
            }

            while (weekdayOfFirstDate > 0) {
                DateTime dateTime = firstDateOfMonthToSet.minusDays(weekdayOfFirstDate
                        - startDayOfWeek);
                if (!dateTime.lt(firstDateOfMonthToSet)) {
                    break;
                }
                datetimeList.add(dateTime);
                weekdayOfFirstDate--;
            }

            // Add dates of current month
            for (int i = 0; i < lastDateOfMonth.getDay(); i++) {
                datetimeList.add(firstDateOfMonthToSet.plusDays(i));
            }

            // Add dates of last week from next month
            int endDayOfWeek = startDayOfWeek - 1;//dr
           // int endDayOfWeek = startDayOfWeek;

            if (endDayOfWeek == 0) {
                endDayOfWeek = 7;
            }
            if (lastDateOfMonthTpSet.getWeekDay() != endDayOfWeek) {
                int i = 1;
                while (true) {
                    DateTime nextDay = lastDateOfMonthTpSet.plusDays(i);
                    datetimeList.add(nextDay);
                    i++;
                    if (nextDay.getWeekDay() == endDayOfWeek) {
                        break;
                    }
                }
            }
            // Add more weeks to fill remaining rows
            if (sixWeeksInCalendar) {
                int size = datetimeList.size();
                int row = size / 7;
                int numOfDays = (6 - row) * 7;
                DateTime lastDateTime = datetimeList.get(size - 1);
                for (int i = 1; i <= numOfDays; i++) {
                    DateTime nextDateTime = lastDateTime.plusDays(i);
                    datetimeList.add(nextDateTime);
                }
            }
            return datetimeList;
        }

Hope this will help you :)

Dashrath Rathod
  • 508
  • 1
  • 5
  • 15