0

I am now able to get a list of calendar events in a certain period of time and I want to be returned to another class where Ido further processing of the data got from the class;

I have a method in a class which returns a List:

public class CalendarEvent {
    public String mEventDate;
    private String mEventMonth;
    private String mEventYear;
    private String mEventStartTime;
    private String mEventTitle;

    public CalendarEvent(String eventDate, String eventMonth, String eventYear, String eventStartTime, String eventTitle) {
        CalendarLog.d("Constructor called" + eventDate + eventMonth + eventYear + eventStartTime + eventTitle);

        eventDate = mEventDate;
        eventMonth = mEventMonth;
        eventYear = mEventYear;
        eventStartTime = mEventStartTime;
        eventTitle = mEventTitle;
    }

    //Getters
    public String getmEventDate() {
        return mEventDate;
    }

    public String getmEventMonth() {
        return mEventMonth;
    }

    public String getmEventYear() {
        return mEventYear;
    }

    public String getmEventStartTime() {
        return mEventStartTime;
    }

    public String getmEventTitle() {
        return mEventTitle;
    }

    //Setters
    public void setmEventDate(String mEventDate) {
        this.mEventDate = mEventDate;
    }

    public void setmEventMonth(String mEventMonth) {
        this.mEventMonth = mEventMonth;
    }

    public void setmEventYear(String mEventYear) {
        this.mEventYear = mEventYear;
    }

    public void setmEventStartTime(String mEventStartTime) {
        this.mEventStartTime = mEventStartTime;
    }

    public void setmEventTitle(String mEventTitle) {
        this.mEventTitle = mEventTitle;
    }
}

method used to return List

public List<CalendarEvent> readCalendarEvents(Context context) {
        List<CalendarEvent> calendarEvents = new ArrayList<CalendarEvent>();

        Calendar calendar = Calendar.getInstance();
        String currentDatString = new SimpleDateFormat("dd/MM/yy").format(calendar.getTime());
        String currentDate = new SimpleDateFormat("d").format(calendar.getTime());
        String currentMonth = new SimpleDateFormat("M").format(calendar.getTime());
        String currentYear = new SimpleDateFormat("y").format(calendar.getTime());
        CalendarLog.d(currentDate + "/" + currentMonth + "/" + currentYear);

        final String[] COLS = new String[] {
                CalendarContract.Events.TITLE,
                CalendarContract.Events.DTSTART
        };

        Cursor mCursor = context.getContentResolver().query(
                CalendarContract.Events.CONTENT_URI,
                COLS,
                null, null, null
        );
        mCursor.moveToFirst();
        String eventTitle = "N/A";
        Long start = 0L;
        Long startTime = 0L;

        Format df = DateFormat.getDateFormat(context);
        Format tf = DateFormat.getTimeFormat(context);

        while(mCursor.moveToNext()) {
            eventTitle = mCursor.getString(0);
            start = mCursor.getLong(1);
            startTime = mCursor.getLong(mCursor.getColumnIndex(CalendarContract.Events.DTSTART));

            String eventDate = new SimpleDateFormat("d").format(start);
            String eventMonth = new SimpleDateFormat("M").format(start);
            String eventYear = new SimpleDateFormat("y").format(start);

            String eventStartTime = new SimpleDateFormat("KK:mm a").format(startTime);

            if(Integer.parseInt(eventDate) > Integer.parseInt(currentDate) && Integer.parseInt(eventMonth) >= Integer.parseInt(currentMonth) && Integer.parseInt(eventYear) >= Integer.parseInt(currentYear)) {
                //get events upcoming events
                //TODO parameters: date, month, year, startTime, title
                calendarEvents.add(new CalendarEvent(eventDate, eventMonth, eventYear, eventStartTime, eventTitle));
                CalendarLog.d("title: " + eventTitle + "\n" + "start: " + eventDate + "\n" + "startTime: " + eventStartTime);
            }
        }

        return calendarEvents;
    }

where I get the value by:

calendarEvents = getCalendarEvents();
        for(int i = 0; i < calendarEvents.size(); i++) {
            String dateString = calendarEvents.get(i).getmEventDate() + "/" +
                    calendarEvents.get(i).getmEventMonth() + "/" +
                    calendarEvents.get(i).getmEventYear();
            String date = calendarEvents.get(i).toString();

            Log.d(LOG_TAG, "date: " + dateString + "\n" + "title: " + calendarEvents.get(i).getmEventTitle());
        }

where getCalendarEvents() is as follow:

private List<CalendarEvent> getCalendarEvents() {
        return mCalendarContentResolver.readCalendarEvents(getActivity().getApplicationContext());
    }

but the result is date: null/null/null

Any ideas will be greatly appreciated! :D

1 Answer 1

2

try this

   public CalendarEvent(String eventDate, String eventMonth, String eventYear, String eventStartTime, String eventTitle) {
    this.mEventDate = eventDate;
    this.mEventMonth = eventMonth;
    this.mEventYear = eventYear;
    this.mEventStartTime = eventStartTime;
    this.mEventTitle = eventTitle;
    }

Intead of

    public CalendarEvent(String eventDate, String eventMonth, String eventYear, String eventStartTime, String eventTitle) {
    eventDate = mEventDate;
    eventMonth = mEventMonth;
    eventYear = mEventYear;
    eventStartTime = mEventStartTime;
    eventTitle = mEventTitle;
    }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.