0

Ich benutze Recycling-Ansicht in meiner Anwendung. Ich habe eine Schaltfläche oberhalb der Recycle-Ansicht im relativen Layout zum Ändern des Layout-Managers. Es zeigt zuerst den Grid-Layout-Manager an und wenn eine Schaltfläche angeklickt wird, wird der Linearlayout-Manager angezeigt. Während ich den Layout-Manager ändere, beginnt die Recycle-Ansicht erneut an der ersten Position.Recyclerview Scrollen Position nach dem Ändern des Layouts

Kann mir jemand helfen, die Position beizubehalten, wenn die Änderung im Layout-Manager dynamisch vorgenommen wird?

+0

Haben Sie versucht, 'RecyclerView # scrollToPosition (int Position)'? – nshmura

+0

Ich möchte das Scrollen nicht anzeigen –

+0

scrollToPosition zeigt das Scrollen nicht an. Dieser Methodenname ist etwas kompliziert. – nshmura

Antwort

3

Sie müssen die firstVisibleItem erinnern und zu dieser Position zu bewegen, nachdem der Layoutmanager ändert es funktioniert gut ich es gerade versucht, von mir aus:

Z.B. Button Klick auf LayoutManager ändern:

btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int i = ((LinearLayoutManager) rcView.getLayoutManager()).findFirstVisibleItemPosition(); 
       if(rcView.getLayoutManager() instanceof GridLayoutManager) {     
        rcView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); 
       } else {      
        rcView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 
       } 
       rcView.scrollToPosition(i); 
      } 
     }); 
+0

Ich werde dies versuchen –

+0

Dank @david diese Antwort ist hilfreich –