2016-06-09 20 views
1

ich dies bereits verwendet haben:blättern Programmatically eine RecyclerView mit GridLayoutManager

mRecyclerView.getLayoutManager().scrollToPosition(0); 

programmatisch eine RecyclerView mit einem LinearLayoutManager zu blättern.

Ich habe versucht, das gleiche mit einem RecyclerView mit einem GridLayoutManager zu tun.

Das Problem ist, dass scrollToPosition nicht wirklich sinnvoll ist, weil ein Element in der Mitte einer Zeile sein kann. Jedenfalls habe ich diesen Code ausprobiert und es hat nichts getan.

Gibt es eine Möglichkeit, ein RecyclerView mit einem GridLayoutManager programmgesteuert zu scrollen?

Antwort

1

Eigentlich:

mRecyclerView.getLayoutManager().scrollToPosition(0); 

funktioniert. In meinem Fall ist es nicht, weil ich es synchron in dem Verfahren rief:

public void onDestroyActionMode(ActionMode mode)

Es war genug, um ein lauffähiges zu schreiben (ohne Verzögerung) an den Greifer des Haupt-Thread.

new Handler(Looper.getMainLooper()).post(new Runnable() { 
     @Override 
     public void run() { 
      if (mRecyclerView != null) { 
       mRecyclerView.scrollToPosition(0); 
      } 
     } 
    }); 
0

Sie können Methode "scrollVerticallyBy" von GridLayoutManager

int scrollVerticallyBy (int dy, 
       RecyclerView.Recycler recycler, 
       RecyclerView.State state) 

Scroll vertikal durch dy Pixel in Bildschirmkoordinaten verwenden und die zurückgelegte Strecke zurück. Die Standardimplementierung tut nichts und 0 zurück

Ref: scrollVerticallyBy

+1

richtig, aber das bedeutet, dass ich das Scrollen selbst implementieren müsste. Ich war auf der Suche nach ein bisschen Unterstützung von der Implementierung von GridLayoutManager – kingston

+0

Ja, vielleicht gibt es andere Lösungen, aber nach der Referenz das ist es. –

Verwandte Themen