我有一個月查看日曆的應用程序,其中有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
。
我哪裏錯了?
謝謝。我調試它並找出問題所在。 「if(isHoliday(day,month,year))',而不是'if(isHoliday(i,month,year))'。 – input