Краткий ответ:
Необходимо удалить оператор notes.clear()
, когда вы получаете изменение в списке LiveData
из базы данных через наблюдателя.
Подробный ответ
Когда вы в первый раз запустите свое приложение, оно покажет весь правильный список, потому что условие if (mNotes.size() > 0)
не выполнено, и полученный список не будет очищен через notes.clear()
, поэтому RecyclerView
отобразит правильные данные.
Но когда вы удаляете заметку, то, когда наблюдатель снова запускается с новым списком, будет выполнено условие if (mNotes.size() > 0)
, поэтому вы очистит список, поступающий из базы данных, перед тем, как снабдить адаптер адаптером, поэтому RecyclerView
будет свободен от данных.
Поэтому для решения этой проблемы замените notes.clear();
на mNotes.clear();
Таким образом, правильный код будет:
private void getMemos(){
mRepository.getAllMemos().observe(this, new Observer<List<Note>>() {
@Override
public void onChanged(List<Note> notes) {
if (mNotes.size() > 0){
mNotes.clear();
}
if (notes != null){
mNotes.addAll(notes);
mMemoAdapter.watchMemoChanges((ArrayList<Note>) notes);
}
}
});
}
Wi sh, который поможет вам. Я не проверял остальную часть кода, пожалуйста, дайте мне знать, если есть еще одна проблема, чтобы помочь больше