2016-04-18 7 views
1

Ich entwickle Android-Anwendung mit mehreren Fragment in einer Aktivität. Ich benutze Rasteransicht innerhalb des Fragments. Wenn ich das Fragment ändere und dann den Stapel auf das alte Fragment zurücksetze, wurde die Bildlaufposition der Rasteransicht auf die Position Null geändert. Wie behält man die Scroll-Position der Rasteransicht nach dem Fragment-Popup-Stack?Wie wird die Scroll-Position der Rasteransicht nach dem Fragment-Popup-Stapel beibehalten?

+0

Rasteransicht-Adapter nicht in onResume() festlegen. –

+0

Ihr Problem hängt eng mit dieser Frage zusammen: http://stackoverflow.com/questions/3014089/maintain-save-restore-scroll-position-with-returning-to-a-listview/3035521#3035521. Hör zu. Es handelt sich um eine ListView, aber es scheint (Nach einer kurzen Inspektion) kommen alle Methoden von AbsListView, von denen GridView auch erbt. – Machinarius

+0

Können Sie Ihren Code teilen, wo Sie Adapter einstellen, kann Ihr Adapter zurückgesetzt werden, wenn das Pop-Menü geschlossen wird. –

Antwort

6

Nun, tue dies

in Ihnen onCreateView() -Methode

GridAdapter yourGridAdapter; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ... 

    if(yourGridAdapter ==null){ 
    yourGridAdapter = new GridAdapter(); 
    } 

    GridView gridView = (GridView) convertView.findViewById(R.id.your_grid_view); 
    gridView.setAdapter(yourGridAdapter); 

    ... 
    } 

Erläuterung:

Wenn ein Fragment von Pop zurück Stapeln auf seiner onCreateView() und ein Verfahren nach dem in Fragmente neu geladen wird lebenszyklus bis OnResume() get aufgerufen und wenn Sie den Adapter in OnCreateView() -Methode wieder instanziiert werden die GridView-Elemente wieder erstellt, aber wenn Sie nicht instanziieren wird der gleiche Adapter an die GridView angefügt werden.

+0

Vielen Dank für Ihre Lösung. Ich kann die Scroll-Position beibehalten. aber wenn ich bis zum Ende von GridView blättern (letztes GridView-Objekt) und dann zum nächsten Fragment gehe, war es nach dem Back-Stack-Fragment falsche Scroll-Position. ansonsten rechte Bildlaufposition. Hast du noch eine Idee? – Sopheak

+0

Die Verwendung von GridLayoutManager mit RecyclerView kann helfen, weil ich nicht viel Ahnung von GridView habe –

Verwandte Themen