169 похожих чатов

Заметил разницу в обновлении элементов recyclerView в двух вариантах (оба

отображаются корректно), код у них идентичен:
1. обычный RV: при обновлении элемента в item_layout не видно "моргания". Т.е. если изменилась цена, то только этот элемент обновляется. Обновление через notifyDataChange
2. ListView + DiffUtil. Видно моргание при обновлении элемента. Т.е. item_layout похоже полностью перерисовывается. Обновление через .submit()

Как правильно настроить ListView, чтобы не было "моргания"?

12 ответов

13 просмотров

не использовать его

используй только ресуслер

Так вы по моему сами отвечаете на свой вопрос. Либо так его задаете.

Aleksandr- Автор вопроса
Андрей
Так вы по моему сами отвечаете на свой вопрос. Либ...

в моем понимании .submit через diffUtil.callback находит только изменившийся элемент списка и по нему перерисовывает item_layout для конкретного элемента. notifyDataSetChanged() должен делать то же самое для всего списка. Так почему при submit я вижу моргание перерисовки одного изменившегося элемента, а при notifyDataSetChanged- нет?

Aleksandr
в моем понимании .submit через diffUtil.callback н...

Скорее всего, это связано с внутренними процессами работы RecyclerView. Тоже сталкивался с таким явлением и просто обновлял весь список. Просто обновляйте список полностью и тогда моргание не заметно.

Aleksandr- Автор вопроса

хмм, я всегда считал, что ListAdapter+DiffUtil и созданы, чтобы оптимизировать обновление RV+асинхронный режим. Мне кажется, что нужно где-то что-то включить, может анимацию. Но вопрос- что именно( раньше были попроще лэйаты, поэтому ListAdapter незаметно работал. Но сейчас прям бросается в глаза

Aleksandr
хмм, я всегда считал, что ListAdapter+DiffUtil и с...

Безусловно, обновление конкретного элемента, менее ресурс затратно. Но это видно именно таким морганием. Я не слышал об каком то волшебном пункте, не моргать.

Aleksandr
хмм, я всегда считал, что ListAdapter+DiffUtil и с...

Если найдете способ, что бы на всех устройствах и во всех сценариях не моргает, поделитесь пожалуйста. Очень любопытно.

Aleksandr
хмм, я всегда считал, что ListAdapter+DiffUtil и с...

Но если вам все равно надо это использовать, то оформите это не как баг, а как фичу. По типу красивой анимации обновления, что бы привлечь внимание пользователя.

Aleksandr- Автор вопроса
Aleksandr
попробуйте rv.itemAnimator = null помогло мне

Значит это просто умышленная анимация была. Вы ее отключили. Отличный опыт. Спасибо.

там итем аниматор надо иницализировать, в гугле есть решений полно. гуглить в сторону disable item blink effect in recycler view типа того если загуглить то там есть

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

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
а чем хуже?
Alexey Kulakov
10
Карта сайта