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

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

码:

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

我要去哪里错了?

最佳答案

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

07-28 12:32