RecyclerView notifyDataSetChanged свитки в верхнее положение

При вызове notifyDataSetChanged на RecyclerView он не сохраняет положение прокрутки и прокручивает вверх, есть ли какое-либо решение сохранить его положение прокрутки?

Если ваш родительский элемент списка RecyclerView имеет свойство «wrap_content», Recyclerview снова вычисляет высоты и прокручивает вверх.

Существует два решения:

  1. Установите свою высоту как постоянное значение: layout_height="100dp"
  2. Используйте StaggeredGridLayoutManager следующим образом:

    mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL));

Если вы хотите изменить элементы с анимацией, используйте метод notifyItemChanged в Fragment или Activity. Не в классе адаптера:

 mRecyclerView.getAdapter().notifyItemChanged(position); 

Второе решение более эффективно, и я предлагаю этот

Не уверен, что это решает вашу проблему, но у меня была такая же проблема, и это было потому, что я вызывал setAdapter после уведомления. Итак, не вызвав setAdapter после уведомления, решила проблему.

 mAdapter.notifyItemRangeInserted(mAdapter.getItemCount(), list.size() - 1); recyclerView.setAdapter(); // remove this line. //Do this only when you're setting the data for the first time or when adapter is null. 

RecycleViews будет прокручивать назад вверху любого варианта notifyDataSetChanged если у них нет менеджера макетов. Вот пример того, как его установить.

 recycleView.setLayoutManager(new LinearLayoutManager(context, OrientationHelper.VERTICAL, false)); 

Как я предполагаю, вы делаете перезагрузку адаптера в RecyclerView а затем вызываете notifyDataSetChanged().

Вам необходимо передать только dataList в адаптер, передав dataList в виде адаптера, например update(dataList) . И в этом методе вы можете назначить этот список списку адаптеров, например;

 public void update(ArrayList<Hashmap<String,String> list){ this.mList = list; } 

Вы можете использовать swapAdapter () и после вызова notifyDataSetChange () . Это работает для меня.

Intereting Posts