xXJJJasonMokXx
xXJJJasonMokXx

Reputation: 367

Android: ArrayList null data

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

Upvotes: 0

Views: 76

Answers (1)

M D
M D

Reputation: 47807

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;
    }

Upvotes: 2

Related Questions