В моем приложении для Android у меня есть список Appointment
объектов, содержащих информацию о назначении. A ListView
затем заполняется выбором этих встреч, отсортированным по времени.Изменить предыдущий элемент на итерации
Я написал свой собственный адаптер для этого списка, чтобы иметь возможность вставлять «свободные» встречи, когда есть разрыв между встречами.
Это мой код до сих пор:
ArrayList<Appointment> appointments = new ArrayList<Appointment>();
// populate arraylist here
ListIterator<Appointment> iter = appointments.listIterator();
DateTime lastEndTime = new DateTime();
int count = 0;
while (iter.hasNext()){
Appointment appt = iter.next();
lastEndTime = appt.endDateTime;
// Skips first iteration
if (count > 0)
{
if (lastEndTime.isAfter(appt.startDateTime))
{
if (iter.hasNext())
{
Appointment freeAppt = new Appointment();
freeAppt.isFreeTime = true;
freeAppt.subject = "Free slot";
freeAppt.startDateTime = lastEndTime;
freeAppt.endDateTime = lastEndTime.minusMinutes(-60); // Currently just set to 60 minutes until I solve the problem
iter.add(freeAppt);
}
}
}
count++;
}
DiaryAdapter adapter = new DiaryAdapter(this, R.layout.appointment_info, appointments);
Проблема, что у меня есть логика одна. Я ломаю себе голову, чтобы попытаться найти решение, но похоже, что отсутствие знаний о java немного меня удерживает.
Чтобы узнать, когда заканчивается назначение «свободного времени», я должен знать, когда начинается следующая «настоящая» встреча. Но я не могу получить эту информацию до следующего цикла итератора, и к этому времени назначение «свободного времени» больше не в контексте.
Как я могу решить эту проблему?
И вот я подумал, что я так умен, используя итератор! Когда на самом деле, моя первая мысль была счетчиком. –
Благодарим за дополнительную информацию. Преимущество, которое я нашел для использования итератора, состояло в том, что я смог использовать 'iter.add()' для вставки новой строки в текущую позицию. Есть ли хороший эквивалент этому, если я просто использую подход счетчика/индекса? –
@Teifi: Вы просто используете 'List.add' с индексом. –