Ошибка смещения Android StaggeredGridLayoutManager

Когда вы очищаете свой адаптер и вызываете notifyDataSetChanged(), менеджер StaggedGridLayoutManager по-прежнему имеет mCachedStart/End в Span[] экземплярах. Поэтому, когда вы добавляете новые элементы в адаптер, менеджер компоновки отрисовывает элементы со смещением, и это огромная проблема.

EtsyStaggeredGridView имеет метод resetToTop(), который очищает все кешированные данные и рисует все с нуля.

Есть несколько обходных путей:

  • Позвоните layoutManager.onDetachedFromWindow(recyclerView, null) после очистки адаптера
  • Установите новый менеджер компоновки, который является плохим

добавить 20 элементов в адаптер прокрутите немного удалить элементы, уведомить об изменениях, добавить 20 элементов




Ответы (1)


Есть несколько обходных путей:

  • Позвоните layoutManager.onDetachedFromWindow(recyclerView, null) после очистки адаптера
  • Установите новый менеджер компоновки, который является плохим
person Alex    schedule 23.12.2015
comment
Что ж, это необычный вопрос, но он не похож на вопрос, но предоставленная информация просто решила проблему. Вызовите layoutManager.onDetachedFromWindow(recyclerView, null) после очистки адаптера. Спасибо, теперь проблема со смещением исчезла. - person Yunus Yurtturk; 22.02.2016