В методе описан цикл, показывающий, сколько событий запланировано на день. Вроде все просто: код запускается заново для нового дня, цикл проверяет по каждому событию за месяц совпадение даты. Если совпадает, перегружает их в массив на сегодня и возвращает длину нового массива. Вот только на практике все события за все дни попадают на первый день, а на остальных пусто. Почему так?
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
{
Date monthDate = dates.get(position);
Calendar dateCalendar = Calendar.getInstance();
dateCalendar.setTime(monthDate);
int DayNo = dateCalendar.get(Calendar.DAY_OF_MONTH);
int displayMonth = dateCalendar.get(Calendar.MONTH) + 1;
int displayYear = dateCalendar.get(Calendar.YEAR);
int currentMonth = currentDate.get(Calendar.MONTH) + 1;
int currentYear = currentDate.get(Calendar.YEAR);
View view = convertView;
if (view == null)
{
view = inflater.inflate(R.layout.single_cell_layout, parent, false);
}
if (displayMonth == currentMonth && displayYear == currentYear)
{
view.setBackgroundColor(getContext().getResources().getColor(R.color.green));
}
else
{
view.setBackgroundColor(Color.parseColor("#cccccc"));
}
TextView Day_Number = view.findViewById(R.id.calendar_day);
TextView EventNumber = view.findViewById(R.id.events_id);
Day_Number.setText(String.valueOf(DayNo));
Calendar eventCalendar = Calendar.getInstance();
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < events.size(); i++)
{
eventCalendar.setTime(ConvertStringToDate(events.get(i).getDATE()));
if (DayNo == eventCalendar.get(Calendar.DAY_OF_MONTH) && displayMonth == eventCalendar.get(Calendar.MONTH) + 1
&& displayYear == eventCalendar.get(Calendar.YEAR))
{
arrayList.add(events.get(i).getEVENT());
EventNumber.setText(arrayList.size() + " Events");
}
}
return view;
}