Вы должны просто , а не удалить объект из области, или, по крайней мере, не сейчас.
Одна идея состоит в том, чтобы добавить к этому объекту настраиваемое поле, что-то вродеboolean askedForDeletion;
(и его установщик и получатель).
Затем, когда вы захотите удалить его, просто переключите это поле в false, добавьте его в список отмены и попросите RecyclerView перезагрузить:
item.setAskedForDeletion(false);
undoList.add(item);
recyclerView.notifyDataSetChanged();
Теперь, конечно, набор данных RecyclerView
должен фильтровать элементы в соответствии с этой переменной.Где-то в коде вы просите Realm дать вам предметы.Если у вас есть что-то вроде:
realm.where([Item].class).findAll();
, вам следует обновить его с помощью:
realm.where([Item].class).equalTo("askedForDeletion", false).findAll();
, чтобы вы получили только не удаленные.
Наконец: решитемомент, когда приложение должно удалить «список отмен».Может быть, «onDestroy», или где-то, где вы уверены, что пользователь не будет грустно, чтобы быть не в состоянии отменить больше.Там вы должны удалить все элементы, которые запрашивали удаление:
realm.where([Item].class).equalTo("askedForDeletion", true).findAll(); // And delete them as you prefer.