我有一个月度查看日历应用程序,其中有很多活动。 我想使用ListView以列表格式显示所有事件。

通过使用本教程,我设法实现了适配器。 但是,我在遍历月份以检查哪些日期是假期并将其显示在列表视图中时遇到麻烦。

码:

Fragment.java

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    //initialize calendar 
    .....

   //loop through the month to get the events
    for(int i = 0; i < _calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++){
            if(isHoliday(day, month, year))
            {
                Log.d("Calendar", "Events");
                CalendarEvents events = new CalendarEvents();
                final ArrayList<Event> e = new ArrayList<Event>();
                e.addAll(events.eventDetails(month, day));

                for (int j = 0; j < e.size(); j++)
                {
                   Event event = e.get(i);
                   summary_data = new Summary[]
                    {
                       new Summary("EVENT 1", "Event")
                    };
                } 
            }
        }


       //this code works:
        /*summary_data = new Summary[]
        {
             new Summary("Cloudy", "Cloudy"),
             new Summary("Showers", "Showers"),
             new Summary("Snow", "Snow"),
             new Summary("Storm", "Storm"),
             new Summary("Sunny", "Sunny")
        };*/

        summaryAdapter = new SummaryAdapter(this.getActivity().getApplicationContext(), R.layout.listview_item_row, summary_data);

        calendarSummary = (ListView) v.findViewById(R.id.calendarSummary);
        calendarSummary.setAdapter(summaryAdapter);
}

SummaryAdapter.java:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    SummaryHolder holder = null;

    if(row == null)
    {

        row = mInflater.inflate(layoutResourceId, parent, false);

        holder = new SummaryHolder();
        holder.summaryDate = (TextView)row.findViewById(R.id.summaryDate);
        holder.summaryDetail = (TextView)row.findViewById(R.id.summaryDetail);

        row.setTag(holder);
    }
    else
    {
        holder = (SummaryHolder)row.getTag();
    }

    Summary summary = data[position];
    holder.summaryDate.setText(summary.summaryDate); //throws NullPointerException
    holder.summaryDetail.setText(summary.summaryDetail);

    return row;
}

holder.summaryDate.setText(summary.summaryDate); 它抛出NullPointerException

我要去哪里错了?

#1楼 票数:1 已采纳

你调试了吗? 尝试添加一个断点,并仔细检查所有变量是否都已初始化,对于我所看到的,我将直接转到变量“数据”,检查其是否具有值。

#2楼 票数:0

将验证设置为

 if(data != null) {
    Summary summary = data[position];
 }

在列表视图构建过程中可能引发这些错误。

  ask by input translate from so

未解决问题?本站智能推荐:

1回复

单击特定事件后如何获取Android中的日历事件信息?

可以在一个时间范围内获取事件,但是当用户单击某些事件中的任何部分时,也可以获取事件信息。 例如,如果事件包含已链接的URI,则应用程序是否可能知道被单击的源事件?
1回复

迭代当前月份以获取所有活动

我有一个日历应用程序。 我想添加一个列表视图,显示当前月份的所有事件。 这是我用来循环的代码,但它只显示该月的最后一个事件,而不是所有事件: 更新的代码:
2回复

AndroidSDK:如何获取日历事件的不在办公室状态?

Galaxy S3、ICS、Java:对于即将到来的 CalendarContract 事件,我如何确定该事件是否将不在办公室,例如即将到来的假期? 使用 CalendarContract.Events 我可以成功读取日历事件信息,包括 AVAILABILITY(BUSY、FREE、TENTATI
2回复

在Android的CalendarView中触摸选定的日期时无法生成事件

我在使用CalendarView时遇到问题。 我希望活动1中的用户转到活动2中的日历,然后触摸一个日期,然后转到活动3。 当前,如果用户想要触摸已经选择的日期(默认情况下使用今天的日期)继续前进,则他不能这样做,因为日历的唯一事件是OnDateChangeListener而我无法使其与O
1回复

如何通过我的应用将事件设置为设备日历?

我的应用程序中有日期字段。单击按钮后,我想在android设备日历中设置这些日期,它必须提醒有关事件的同一日期。 我该如何实施? 请有人帮我做类似的例子。 提前致谢。 请有人帮助我如何将EditText中的日期设置为Android中的设备日历? 我是android的新手,我从最
1回复

在Android上创建多个日历事件

我有以下代码,当单击按钮时会创建一个事件。 我想知道如何通过按此按钮来创建多个(说5)事件。 感谢您的任何帮助! 到目前为止,代码只创建了一个事件,只需要创建多个即可,最好没有“保存/取消”屏幕。
2回复

添加日历事件

我想从我的应用程序在android日历中添加一个事件。 我已通过使用以下代码将事件添加到日历中。 我需要在日历上增加一个小时。 因此,我使用代码添加了1小时到结束日期: 但是当我在日历中查看时,显示的是12小时事件。 这意味着,如果添加了明天晚上10点的活动,则会创建一个从明天晚上
1回复

读取2个日期之间的日历事件

我正在尝试读取 2 个日期之间的日历事件。 我使用 Google 开发人员示例 ( https://developer.android.com/guide/topics/providers/calendar-provider ),但它不起作用。 当然,我在要求的日期有活动。 如果我阅读日历的所有事件