From 9672ea6cf1c2a0f37cc1472bd71c1d42cf8f1395 Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Wed, 23 Mar 2016 12:32:58 +0100 Subject: [PATCH] Implemented restoring list position for AbstractListFragment --- .../xbmc/kore/ui/AbstractListFragment.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java index efed551..fb09ad5 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java @@ -47,6 +47,8 @@ public abstract class AbstractListFragment extends Fragment { private static final String TAG = LogUtils.makeLogTag(AbstractListFragment.class); private BaseAdapter adapter; + private final String BUNDLE_SAVEDINSTANCE_LISTPOSITION = "lposition"; + private boolean gridViewUsesMultipleColumns; @InjectView(R.id.swipe_refresh_layout) SwipeRefreshLayout swipeRefreshLayout; @@ -72,6 +74,16 @@ public abstract class AbstractListFragment extends Fragment { adapter = createAdapter(); gridView.setAdapter(adapter); + if (savedInstanceState != null) { + final int listPosition = savedInstanceState.getInt(BUNDLE_SAVEDINSTANCE_LISTPOSITION); + gridView.post(new Runnable() { + @Override + public void run() { + gridView.setSelection(listPosition); + } + }); + } + //Listener added to be able to determine if multiple-columns is at all possible for the current grid //We use this information to enable/disable the menu item to switch between multiple and single columns gridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @@ -92,12 +104,19 @@ public abstract class AbstractListFragment extends Fragment { } }); - setHasOptionsMenu(true); return root; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (gridView != null) { + outState.putInt(BUNDLE_SAVEDINSTANCE_LISTPOSITION, gridView.getFirstVisiblePosition()); + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.abstractlistfragment, menu);