Обновление элемента RecyclerView ProgressBar без вызова notifyItemChanged(int) для адаптера

Я пытаюсь обновить ProgressBar, который является частью одного из элементов RecyclerView. Я знаю, что могу сделать это двумя способами,

Способ 1: обновив строку элемента, вызвав notifyItemChanged(position)

Способ 2: путем доступа к представлению с помощью метода findViewByPosition() объекта LayoutMananger.

Но, к сожалению, никто из них не работает в моем случае.

Если я воспользуюсь первым, весь предмет будет перекрашен, цвет фона в окне реселлера будет серым, а предмет - белым, поэтому пользователь сможет заметить обновление всего предмета.

Если я попробую второй, у меня будут проблемы с прокруткой.

Я хочу обновить прогресс так же, как WhatsApp. заранее спасибо

1 ответ

Если я воспользуюсь первым, весь предмет будет перекрашен, цвет фона в окне реселлера будет серым, а предмет - белым, поэтому пользователь сможет заметить обновление всего предмета.

Я столкнулся с этой проблемой также. Чтобы это исправить, вам нужно отключить стандартную анимацию смены элемента. После того, как вы отключите анимацию смены предметов, ваш recyclerView обновится без каких-либо миганий / скачков, что позволит вам использовать notifyItemChanged(int) без проблем.

Отключите анимацию изменения элемента по умолчанию, например, так:

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
Другие вопросы по тегам