2012-09-17 88 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

相關問題