Обновление элемента RecyclerView ProgressBar без вызова notifyItemChanged(int) для адаптера
Я пытаюсь обновить ProgressBar, который является частью одного из элементов RecyclerView. Я знаю, что могу сделать это двумя способами,
Способ 1: обновив строку элемента, вызвав notifyItemChanged(position)
Способ 2: путем доступа к представлению с помощью метода findViewByPosition() объекта LayoutMananger.
Но, к сожалению, никто из них не работает в моем случае.
Если я воспользуюсь первым, весь предмет будет перекрашен, цвет фона в окне реселлера будет серым, а предмет - белым, поэтому пользователь сможет заметить обновление всего предмета.
Если я попробую второй, у меня будут проблемы с прокруткой.
Я хочу обновить прогресс так же, как WhatsApp. заранее спасибо
1 ответ
Если я воспользуюсь первым, весь предмет будет перекрашен, цвет фона в окне реселлера будет серым, а предмет - белым, поэтому пользователь сможет заметить обновление всего предмета.
Я столкнулся с этой проблемой также. Чтобы это исправить, вам нужно отключить стандартную анимацию смены элемента. После того, как вы отключите анимацию смены предметов, ваш recyclerView обновится без каких-либо миганий / скачков, что позволит вам использовать notifyItemChanged(int)
без проблем.
Отключите анимацию изменения элемента по умолчанию, например, так:
((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);