【问题标题】:Return calendar event details in an array在数组中返回日历事件详细信息
【发布时间】:2012-07-08 20:57:24
【问题描述】:

我有一个日历,如果用户在其中选择日期,它会将他带到活动详细信息页面。在事件详细信息页面上,数据以表格格式显示。到目前为止,一切都很好。问题是如何在eventDetails函数中设置事件的详细信息并返回设置文本。

代码:

  //get the data and split it
    String[] dateAr = date_string.split("-|\\||\\(|\\)|\\s+");
    m = Integer.parseInt(dateAr[6]);
    d = Integer.parseInt(dateAr[3]);
    y = Integer.parseInt(dateAr[8]);

    name = (TextView) this.findViewById(R.id.name);
    title = (TextView) this.findViewById(R.id.title);
    details = (TextView) this.findViewById(R.id.details);


    name.setText(name_details); //should get the info from the eventDetails method
    title.setText(title_details); //should get the info from the eventDetails method
    details.setText(event_details); //should get the info from the eventDetails method

  //event details
  public String eventDetails(int m, int d) {
    String holiday = "";
    switch (m) {
        case 1:
            if (d == 1) {
                holiday = "Some event";
            } else if (d == 10) {
                holiday = "Some event";
            }
            break;
        case 3:
            if ((d == 11) || (d == 12)) {
                holiday = "Some event";
            }
            break;
        case 7:
            if ((d == 1) && (d== 7)) {
                holiday = "Some event";
            }
            break;
    }

    return holiday;
}

字符串holiday 只返回一个对象。我想获取名称、标题和详细信息,并将相应元素的文本设置为它。我怎样才能做到这一点?如何将名称、标题和详细信息添加为单独的对象并将它们作为单独的对象返回以相应地设置文本?我是否将它们添加到数组中?每个活动日期都有类似的东西:

String holiday[] = {"name of the event", "title of the event", "details of the event"};

如果是这样,我如何返回数组来设置文本?

【问题讨论】:

    标签: java android arrays


    【解决方案1】:

    创建一个包含这些事件详细信息的class 并返回它的一个实例。例如:

    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;
        }
    };
    
    public Event eventDetails(int m, int d) {
        if (some-condition)
            return new Event("my-name1", "my-title1", "mydetails1");
        else
            return new Event("my-name2", "my-title2", "mydetails2");
    }
    
    final Event e = eventDetails(1, 4);
    name.setText(e.name);
    title.setText(e.title);
    details.setText(e.details);
    

    【讨论】:

    • 我想在一个日期中添加多个事件?我该怎么做? return new Event("my-name1", "my-title1", "mydetails1") return new Event("my-name2", "my-title2", "mydetails2"); 之类的东西,但这不是正确的方法。
    • @input,返回一个List<Event>List<Event> events = new ArrayList<Event>(); events.add(new Event(....)); events.add(new Event(...)); return events;
    • @hjmd,好吧,我做到了。现在,当我将此代码更改为final List<Event> e = eventDetails(m, d); 时,它会将e.name 标记为错误并抛出错误:name cannot be resolved or is not a field
    • 您需要单独访问List 中的元素。 @input,如果您对想要实现的目标提出新问题,可能会更有成效。更多人会看到它并做出回应。
    • 我已经问了一个新问题:stackoverflow.com/questions/11401191/…你能帮帮我吗?
    【解决方案2】:

    您可以通过两种方式返回,1) 作为您指定的数组 2) 使用所需的变量和 gettter/setter 创建 HolidayVO。

    根据情况:

    case 1:
        if (d == 1) {
           //Create holiday object with values;
        } else if (d == 10) {
            //Create holiday object with values;
        }
        break; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多