отображаются корректно), код у них идентичен:
1. обычный RV: при обновлении элемента в item_layout не видно "моргания". Т.е. если изменилась цена, то только этот элемент обновляется. Обновление через notifyDataChange
2. ListView + DiffUtil. Видно моргание при обновлении элемента. Т.е. item_layout похоже полностью перерисовывается. Обновление через .submit()
Как правильно настроить ListView, чтобы не было "моргания"?
не использовать его
используй только ресуслер
Так вы по моему сами отвечаете на свой вопрос. Либо так его задаете.
в моем понимании .submit через diffUtil.callback находит только изменившийся элемент списка и по нему перерисовывает item_layout для конкретного элемента. notifyDataSetChanged() должен делать то же самое для всего списка. Так почему при submit я вижу моргание перерисовки одного изменившегося элемента, а при notifyDataSetChanged- нет?
Скорее всего, это связано с внутренними процессами работы RecyclerView. Тоже сталкивался с таким явлением и просто обновлял весь список. Просто обновляйте список полностью и тогда моргание не заметно.
хмм, я всегда считал, что ListAdapter+DiffUtil и созданы, чтобы оптимизировать обновление RV+асинхронный режим. Мне кажется, что нужно где-то что-то включить, может анимацию. Но вопрос- что именно( раньше были попроще лэйаты, поэтому ListAdapter незаметно работал. Но сейчас прям бросается в глаза
Безусловно, обновление конкретного элемента, менее ресурс затратно. Но это видно именно таким морганием. Я не слышал об каком то волшебном пункте, не моргать.
Если найдете способ, что бы на всех устройствах и во всех сценариях не моргает, поделитесь пожалуйста. Очень любопытно.
Но если вам все равно надо это использовать, то оформите это не как баг, а как фичу. По типу красивой анимации обновления, что бы привлечь внимание пользователя.
попробуйте rv.itemAnimator = null помогло мне
Значит это просто умышленная анимация была. Вы ее отключили. Отличный опыт. Спасибо.
там итем аниматор надо иницализировать, в гугле есть решений полно. гуглить в сторону disable item blink effect in recycler view типа того если загуглить то там есть
Обсуждают сегодня