В моем приложении для Android я показываю данные в RecyclerView
, используя Room и библиотеку подкачки.
Моя реализация очень похожа на пример в AsyncPagedListDiffer
документах .
Последовательность действий следующая:
- Данные изменены в базе данных
Соответствующий Observer
передает изменения в Adapter
:
myLiveData.observe(viewLifecycleOwner, Observer {
myAdapter.submitList(it)
})
AsyncPagedListDiffer
вычисляет разницу и соответственно обновляет список
Моя проблема - снижение производительности на шаге 3.
Даже если я вставлю только один отдельный элемент в начало списка, различия должны проверять все элементов (что довольно неэффективно, особенно сбольшие наборы данных), тогда как простого вызова notifyItemInserted(0)
будет достаточно.
Есть ли способ обойти это поведение?
Например, могу ли я сказать, что он не обязанпроверить все предметы?Или какие-то другие решения для этого?
Буду очень признателен за любой совет.