Android: ArrayList null data



我现在可以获得某一时间段内的日历事件列表,我希望返回到另一个类,在那里我可以进一步处理从该类获得的数据;

我在一个类中有一个方法,它返回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;
    }
}

用于返回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;
    }

其中我通过以下方式获得值:

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

其中getCalendarEvents()如下:

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

但结果是date: null/null/null

任何想法都将不胜感激!:D

尝试这个

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

内部

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

最新更新