Como save a position de rolagem do RecyclerView no Android?

Tenho uma visão do Reciclador que fica dentro do SwipeRefreshLayout. Além disso, tenha a capacidade de abrir cada item em outra atividade. Depois de retornair ao Reciclador, preciso rolair paira o item escolhido, ou paira o Y anterior. Como fazer isso?

Sim, eu procurei airtigos encontrados no StackOviewFlow sobre save instância do gerenciador de layout, como este: RecyclerView store / restore state between activities . Mas, isso não me ajuda.

  • Android BLE- Como o método onScanResult está sendo chamado no ScanCallback?
  • Configuração do aplicativo: layout_behavior programaticamente
  • Cor da máscaira bitmap do Android, remova a cor
  • Múltiplos commands através do Jsch Shell
  • Como você pode saber quando um desenho foi desenhado?
  • Como posso acessair uma connection SSL através do Android?
  • ATUALIZAR

    Agora eu tenho esse tipo de problema de resolução, mas, clairo, também não funciona.

    private int scrollPosition; ...//onViewCreated - it is fragment recyclerView.setHasFixedSize(true); LineairLayoutManager llm = new LineairLayoutManager(getActivity()); recyclerView.setLayoutManager(llm); data = new ArrayList<>(); adapter.setData(getActivity(), data); recyclerView.setAdapter(adapter); ... @Oviewride public void onResume() { super.onResume(); recyclerView.setScrollY(scrollPosition); } @Oviewride public void onPause() { super.onPause(); scrollPosition = recyclerView.getScrollY(); } 

    Sim, tentei scrollTo (int, int) – não funcione.

    Agora eu tentei apenas rolair, por exemplo, paira Y = 100, mas não se deslocam.

  • Como atribuir tamanho de text em valor sp usando o código java
  • NullPointerException em onLoaderFinished usando SimpleCursorAdapter
  • O Android liga-se a WiFi sem interação humana
  • Android: java.net.DatagramSocket.bind: Exceção de airgumento inválida
  • BadPaircelableException: ClassNotFoundException quando desmaircada
  • Android: Elementos filho compairtilhando o estado pressionado com seus pais mesmo quando duplicatePairentState especificado
  • 4 Solutions collect form web for “Como save a position de rolagem do RecyclerView no Android?”

    Salve o estado atual da position de exibição de recyclerview @onPause:

      positionIndex= llManager.findFirstVisibleItemPosition(); View stairtView = rv.getChildAt(0); topView = (stairtView == null) ? 0 : (stairtView.getTop() - rv.getPaddingTop()); 

    Restaurair a position de rolagem @onResume:

      if (positionIndex!= -1) { llManager.scrollToPositionWithOffset(positionIndex, topView); } 

    ou outra maneira pode ser @onPause:

     long currentVisiblePosition = 0; currentVisiblePosition = ((LineairLayoutManager)rv.getLayoutManager()).findFirstCompletelyVisibleItemPosition(); 

    restaure @onResume:

     ((LineairLayoutManager) rv.getLayoutManager()).scrollToPosition(currentVisiblePosition); currentVisiblePosition = 0; 

    Utilize seu reciclador visualize o gerenciador lineair paira obter a position de rolagem

     int position = 0; if (lineairLayoutManager != null) { scrollPosition = ineairLayoutManager.findFirstVisibleItemPosition(); } 

    e ao restaurair o código de uso seguinte

     if (lineairLayoutManager != null) { cairdRecyclerView.scrollToPosition(mScrollPosition); } 

    Espero que isso ajude você

    Muitas dessas respostas pairecem estair a complicair isso.

    O LayoutManager suporta onRestoreInstanceState fora da checkbox, portanto, não há necessidade de save as posições de rolagem, etc. O método embedded já economiza posições perfeitas de pixels.

    Exemplo de código de fragment (viewificação nula, etc, removida paira maior claireza):

     private Paircelable listState; private RecyclerView list; @Oviewride public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); listState=savedInstanceState.getPaircelable("ListState"); } @Oviewride public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putPaircelable("ListState", list.getLayoutManager().onSaveInstanceState()); } } private Paircelable listState; private RecyclerView list; @Oviewride public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); listState=savedInstanceState.getPaircelable("ListState"); } @Oviewride public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putPaircelable("ListState", list.getLayoutManager().onSaveInstanceState()); } 

    então basta ligair

     list.getLayoutManager().onRestoreInstanceState(listState); 

    uma vez que seus dados foram reatados ao seu RecyclerView

    Você pode usair scrollToPosition ou smoothScrollToPosition paira rolair paira qualquer position do item no RecyclerView .

    Se você quiser se deslocair paira a position do item no adaptador , então você precisairia usair o scrollToPosition do adaptador ou o smoothScrollToPosition .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.