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

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

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

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

12 ответов

41 просмотр

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

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

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

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 типа того если загуглить то там есть

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта