2012-09-18 40 views
0

我有一个日历应用程序。我想循环通过当前的月份来获取所有事件。唯一的问题是日期显示所有事件的最后一个事件。循环显示上次日期值

看来所有事件的日期值都被上一个事件的日期值替换。

CalendarEvents events = new CalendarEvents(); 
    final ArrayList<Event> e = new ArrayList<Event>(); 


    for(int i = 0; i < _calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++){ 
     if(isHoliday(i, month, year, date_value)) 
     { 
      String date = i + "-" + month + "-" + year; 

      e.addAll(events.eventDetails(month, day)); 
      summary_data = new Summary[e.size()]; 

      for (int j = 0; j < e.size(); j++) 
      { 

       Event event = e.get(j); 
       summary_data[j] = new Summary(date, event.eventdetails); 
      } 
     } 
    } 

回答

2

是的,这是给定的程序的逻辑。

你循环的日子。对于每一天,您将当天的事件添加到事件列表中(名称很差的e列表)。并且对于每一天,您循环浏览此列表中的每个事件(其中包含从月初到当天的所有事件),并创建一个Summary实例的数组,每个摘要包含当天的日期,以及事件的细节(无论是过去的事件还是当天的事件)。

事件列表似乎没有用。我会简单地使用摘要列表:

final List<Summary> summaries = new ArrayList<Summary>(); 

// loop through the days 
for (int i = 0; i < calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { 
    if (isHoliday(i, month, year, date_value)) { 
     String date = i + "-" + month + "-" + year; 
     // loop through the events of the day 
     for (Event event : events.eventDetails(month, day)) { 
      // add a summary for the current day and the current event of the day 
      summaries.add(new Summary(date, event.eventdetails)); 
     } 
    } 
}