Reputation: 367
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
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