2012-09-17 153 views
0

我有一个月查看日历的应用程序,其中有highligted事件。我想使用ListView以列表格式显示所有事件。使用this tutorial我设法实现了适配器。然而,我无法循环查看月份,查看哪些日期是假期并在listview中显示它们。NullPointerException获取当前月份的事件

代码:

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

你调试了吗?尝试添加一个断点,并仔细检查是否所有的变量都已经初始化,因为我看到我会直接转到变量“data”,检查它是否有值。

+0

谢谢。我调试它并找出问题所在。 “if(isHoliday(day,month,year))',而不是'if(isHoliday(i,month,year))'。 – input

0

设置验证,以

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

这些错误可以列表视图建设过程中被抛出。

+0

我试过了。它仍然在'holder.summaryDate.setText(summary.summaryDate)抛出NullPointerException;'我假设我循环遍历月份的方式不正确? – input

+0

也许。试着比较你的数据大小和循环迭代。 – Yahor10

相关问题