私は、ハイライトされたイベントを持っている月表示カレンダーアプリを持っています。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
ます。
どこが間違っているのですか?