Приложение
My Android использует RecyclerView
для отображения управляемого RealmList
, содержащегося в RealmObject
. Если RealmObject
удален, я получаю следующую ошибку:
java.lang.IllegalStateException: Access to invalidated List object
Ошибка возникает в этом разделе адаптера (который расширяет RecyclerView.Adapter
):
@Override
public int getItemCount() {
if (mEventList != null) {
return mEventList.size(); //Error occurs here
} else {
return 0;
}
}
EventListAdapter(RealmList<TodoItem> todoItems, int colorGroup, OnStartDragListener dragStartListener) {
this.mEventList = todoItems;
this.colorGroup = colorGroup;
this.mDragStartListener = dragStartListener;
}
Это происходит вместе со следующим кодом для удаления RealmObject
, содержащего RealmList
. Ошибка возникает до того, как Activity закрывается, и информация возвращается его родительскому Activity
case R.id.navigation_delete:
deleteGroup();
sendIntentInfoBack(Constants.RESULT_CHANGED, createIntentBundle());
return true;
private void deleteGroup() {
mRealm.executeTransaction(realm -> {
RealmList<TodoItem> eventsToDelete = mCurrentTodoList.getTodos();
eventsToDelete.deleteAllFromRealm();
RealmResults<TodoList> noteToDelete = mRealm.where(TodoList.class).equalTo(TodoList.PK, mCurrentTodoList.getPK()).findAll();
noteToDelete.deleteAllFromRealm();
});
}
Пользователь должен иметь возможность удалить RealmObject
, содержащий RealmList
.
Мои вопросы:
Как мне обработать аннулирование RealmList
? Я пробовал назначить источник данных RecyclerView
как null
, затем выполняя notifyDataSetChanged()
на адаптере перед удалением RealmObject
, но получаю ту же ошибку.
Могу ли я отключить RecyclerView
? Если да, то как?
Могу ли я создать пустой или выброшенный RealmList
, а затем назначить новый адаптер RecyclerView
с этим в качестве источника данных, затем удалите RealmObject
?
Могу ли я закрыть Activity
, содержащий RecyclerView
, и просто обработать удаление RealmObject
в родительском Activity
?
Спасибо за внимание и время.