2012-07-09 93 views
0

@hmjd的答案here帮助我设置多个对象的文本。但我现在遇到了一个问题。日期可以有多个事件,我想在同一事件详细信息页面上显示所有事件及其详细信息。我怎样才能做到这一点?返回多个日历事件

代码:

public class Event 
{ 
    public final String name; 
    public final String title; 
    public final String details; 

    public Event(final String a_name, 
       final String a_title, 
       final String a_details) 
    { 
     name = a_name; 
     title = a_title; 
     details = a_details; 
    } 
}; 



final Event e = eventDetails(1, 4); 
name.setText(e.name); 
title.setText(e.title); 
details.setText(e.details); 

//event details 
public Event eventDetails(int m, int d) { 
    switch (m) { 
     case 1: 
      if (d == 10) { 
       return new Event("event1", "my-title1", "mydetails1"); 
      } 
      if (d == 28) { 
       return new Event("event2", "my-title1", "mydetails1"); 
       return new Event("event3", "my-title2", "mydetails2"); //add another event on this date; obviously this is not the right way. 
      } 

      break; 

    } 

    return new Event("default_my-name2", "default_my-title2", "default_mydetails2"); 
} 
+0

添加事件到ArrayList ,然后相应地处理该ArrayList里面每个事件? – adchilds 2012-07-09 19:13:06

+0

@adchilds,我做到了。 //事件详细信息 public ArrayList eventDetails(int m,int d){ \t ArrayList events = new ArrayList (); 开关(M){ \t \t \t如果(d == 15){ \t \t \t \t events.add(新事件( “事件1”, “EVENTTITLE”, “event_Details”)); (新事件(“event2”,“eventtitle”,“event_Details”)); \t \t \t \t返回事件; \t \t \t} break;我在调用eventDetails函数的时候抛出一个错误:'final Event e = eventDetails(m,d);'错误:'类型不匹配:不能从ArrayList to HijriEvents.Event' – input 2012-07-09 19:50:49

+0

错误告诉你到底发生了什么问题。您试图将eventDetails的返回类型(它返回Event类型的ArrayList)存储到正常的Event中。您不能将ArrayList存储到事件中。另外,你的switch语句现在不做任何事情(在刚刚提供的代码中,原始文章中没有问题)? 最终事件e 应该是ArrayList类型。然后你可以从该ArrayList中提取每个事件。 – adchilds 2012-07-10 14:15:56

回答

1

存储由eventDetails返回的事件,你会做这样的事情:

ArrayList<Event> e = new ArrayList<Event>(); 
e.add(eventDetails(1, 4)); // This adds one event to the ArrayList 

然后访问存储在ArrayList中E中的活动:

Event one = e.get(0); // First Event in the ArrayList 
Event two = e.get(1); // Second Event in the ArrayList 
... 
Event n = e.get(n); // nth Event in the ArrayList 

如果你想使这个动态而不是明确说e.get(0),你会遍历该ArrayList的尺寸如下:

for (int i = 0; i < e.size(); i++) 
{ 
    Event ev = e.get(i); 
    ev.doSomething(); 
    ev.doSomethingElse(); 
} 
+0

非常感谢。 – input 2012-07-11 18:22:59