@anya_hacker

Как добавить в Room сразу список из нескольких элементов?

Есть список из 10 объектов. В цикле for я их добавляю в бд Room (стек - Android, Kotlin).
Подписываюсь на лайвдату этой бд и при малейшем изменении бд - отображаю всю бд в списке recyclerview.
Соответственно, у меня после добавления нового предмета обновляется recycler, аж 10 раз, из-за чего он начинает лагать.
Можно ли сделать так, чтобы room добавил сразу коллекцию объектов, а не по одному?
Ну то есть вот он одним запросом добавил объекты из списка (10 объектов) и только потом пусть мне в лайвдате вернет уже бд с новыми добавленными десятью элементами, которые и отображу в recycler?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
@LukyanovPA
Android Developer
так в чем проблема добавить в ваш DAO функцию типа:
@Insert
fun insertAll(list: List)

или
@Insert
fun insertAll(vararg users: User)

Ну и для ресайклера надо бы использовать DiffUtils
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Dmtm
Android
это называется bulk insert, обеспечивается аннотацией @Transaction
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы