@YuriyBum334

Почему рабочий Java код в Android неверно работает?

В методе описан цикл, показывающий, сколько событий запланировано на день. Вроде все просто: код запускается заново для нового дня, цикл проверяет по каждому событию за месяц совпадение даты. Если совпадает, перегружает их в массив на сегодня и возвращает длину нового массива. Вот только на практике все события за все дни попадают на первый день, а на остальных пусто. Почему так?

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;
}
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
. Если совпадает, перегружает их в массив на сегодня и возвращает длину нового массива

Именно этого в коде и нет. Допиши, будет работать как надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы