2015-04-27 1 views
4

У меня есть RealmResults<Section>, у которого есть поле RealmList<Event>, которое я хочу очистить для каждого раздела.Царство: Итерация объекта RealmObject и очистка поля ArrayList

Я пробовал (insude mRealm.executeTransaction)

for (Section section : mSections) { 
    section.getEvents().clear(); 
} 

и

Iterator<Section> sectionIterator = mSections.iterator(); 
while (sectionIterator.hasNext()) { 
    sectionIterator.next().getEvents().clear(); 
} 

но Realm бросает это исключение

java.util.ConcurrentModificationException: Нет вне изменений в Царство разрешено во время повторения RealmResults. Используйте вместо этого методы итераторов .

+0

Что возвращает 'getEvents()'? Другой 'ArrayList'? –

+0

Объект Events является «RealmList », который в значительной степени является ArrayList – Ben

+2

Вы пытались использовать традиционный цикл? Это может сработать, так как вы фактически не удаляете элементы, которые вы выполняете. –

ответ

7

Так как вы на самом деле не удаляя элементы, которые вы Перебор, вы можете просто использовать традиционный цикл:

for (int i = 0; i < mSections.size(); i++) { 
    mSections.get(i).getEvents().clear(); 
} 

Заметим, что если вы сделали необходимо удалить элементы с помощью Iterator, вы бы необходимо использовать метод remove() на самом Iterator.

See Documentation

 Смежные вопросы

  • Нет связанных вопросов^_^