-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Использовать notifyItemChanged вместо notifyDataSetChanged #129
Comments
Поменял в основных списках. Субъективно, проматывать стало шустрее (но это не точно). Зато появился любопытный баг - при быстрой прокрутке длинного списка пролистанные картинки и текст остаются "кучкой" на экране, но исчезают в течение секунды плавно. Выглядит как глюк, хотя понятно, что это анимация. Подробности здесь: судя по всему, у списков нужно анимацию отключать |
анимация пока не отключена. Может, и фиг с ней. |
еще вариант:
https://stackoverflow.com/questions/42379660/how-to-prevent-recyclerview-item-from-blinking-after-notifyitemchangedpos |
вот так работает (в кучку не сбиваются, а где не сделано - сбиваются): private RecyclerView videoList;
...
videoList.setItemAnimator(null); |
Кстати, глюк с анимацией происходит в списках с картинками, загружаемыми из интернета при промотке (почти все списки). Это логично, т.к. загрузка занимает время и событие о загрузке происходит заметно позднее быстрой промотки. Аналогичным образом в фоне загружаются не только картинки, но значения из базы данных. Но к базе данных обращение происходит гораздо быстрее. |
Так, минус отключения анимации - при появлении или удалении элементов из списка налету (например, в списке закачек или в списке заблокированных видео) анимация исчезания элемента (при удалении: плавное сдвигание оставшихся элементов) тоже исчезает. Так не красиво получается, анимацию (по крайней мере в списках, в которых элементы могут появляться и исчезать при открытом экране списка) не будем удалять. |
вот так, похоже, норм (анимации изменения списка работают, текст в кучку при прокрутке не сбивается): videoList.setItemAnimator(new DefaultItemAnimator() {
@Override
public boolean canReuseUpdatedViewHolder(@NonNull RecyclerView.ViewHolder viewHolder) {
// чтобы картинки и текст не сбивались в кучку при быстрой промотке
// см: https://github.com/sadr0b0t/yashlang/issues/129
return true;
}
}); совет по ссылкам выше. Еще возможный вариант - переопределить animateChange у того же DefaultItemAnimator |
вот так идеально: d3ec8c2 |
Использовать notifyItemChanged вместо notifyDataSetChanged во всех адаптерах. Возможно, длинные списки будут загружаться чуть шустрее.
The text was updated successfully, but these errors were encountered: