-1

ArrayList<> 复制最后一个值,,,

ArrayList<CalanderQueryOutput> results = new ArrayList<CalanderQueryOutput>();

List<?> eventsToday = (List<?>) filter.filter(calendar.getComponents(Component.VEVENT));
CalanderQueryOutput caldavOutput = new CalanderQueryOutput();

for (Iterator<?> i = eventsToday.iterator(); i.hasNext();) {
 Component component = (Component) i.next();
 {
  String Created=component.getProperty(Property.CREATED).toString().trim();
  String Summary = component.getProperty(Property.SUMMARY).toString().trim();

  caldavOutput.CREATED_DATE = Created;
  caldavOutput.Summary = Summary;

 }
 results.add(caldavOutput); 
}

输出仅显示最后一个值

{"CREATED_DATE":"01-Jun-2012","Summary":"Today Swimming"},{"CREATED_DATE":"01-Jun-2012","Summary":"Today Swimming"},{"CREATED_DATE":"01-Jun-2012","Summary":"Today Swimming"}
4

3 回答 3

2

你应该把它放在循环中:

CalanderQueryOutput caldavOutput = new CalanderQueryOutput();

否则,您总是在修改同一个caldavOutput对象。

总是放置相同的元素并对其进行修改,并且该元素将保留您给它的最后一个值。这就是为什么你认为只有最后一个元素是输出。

所以你应该这样做:

for (Iterator<?> i = eventsToday.iterator(); i.hasNext();) {
   Component component = (Component) i.next();{
   String Created=component.getProperty(Property.CREATED).toString().trim();
   String Summary = component.getProperty(Property.SUMMARY).toString().trim();


   CalanderQueryOutput caldavOutput = new CalanderQueryOutput(); // Here
   caldavOutput.CREATED_DATE = Created;
   caldavOutput.Summary = Summary;

  }
  results.add(caldavOutput); 
}
于 2012-06-04T07:04:05.323 回答
2

问题是您只创建了一个 CalenderQueryOutput 并对其进行修改并读取到列表中。您需要创建一个新对象。

for (Iterator<?> i = eventsToday.iterator(); i.hasNext();) {
    Component component = (Component) i.next();
    String Created=component.getProperty(Property.CREATED).toString().trim();
    String Summary = component.getProperty(Property.SUMMARY).toString().trim();

    CalanderQueryOutput caldavOutput = new CalanderQueryOutput();

    caldavOutput.CREATED_DATE = Created;
    caldavOutput.Summary = Summary;
    results.add(caldavOutput); 
}
于 2012-06-04T07:04:16.583 回答
1

把这个放在for循环里面......

CalanderQueryOutput caldavOutput = new CalanderQueryOutput();
于 2012-06-04T07:16:54.027 回答