Нужно удалить элемент из SQLite, а затем из RecyclerView

Как сделать так чтобы удались данные и из RecyclerView и из SQLite? Проблема в том, что в SQLite id autoincrement, а в RecyclerView он обновляется каждый раз при удаление из списка.


Ответы (1 шт):

Автор решения: Sergei Buvaka

Вы приложили слишком мало информации, чтоб помочь вам более точечно. Но я попробую вам помочь в общих чертах.

База данных и RecyclerView это две совершенно разные вещи. У них абсолютно две разные ответственности, а это означает, что они не должны знать друг о друге ничего. И работа одной никак не должна зависеть от другой.

Исходя из того, что у вас есть такая ошибка смею предположить, что ваш RecyclerView нарушает этот контракт и создаёт вас проблемы.

Каково должно быть взаимодействие между этими двумя сущностями?

  • Есть база данных, все что она знает это только и только то как сохранить то что ей передали на вход.

  • Есть RecyclerView, вся ответственность которого это отобразить список переданный ему извне. Он не должен сам ходить в базу данных. Он должен быть максимально тупым. Просто отобразить данные которые ему передаются на вход через метод вроде такого:

    public void update(List items) { this.items = items; notifyDataSetChanged (); }

  • Получать и подготавливать ваши данные вы должны за пределами вашего RecyclerView и просто передавать новые данные в адаптер в метод update().

Хорошо бы даже чтоб сама View (Activity, Fragment) ничего не знала о базе данных. Но это выходит за рамки ответа. Но я советую вам прочесть про паттерны MVP, MVVM.

→ Ссылка