Persist scroll position in Queue view, see AntennaPod/AntennaPod#551
This commit is contained in:
parent
c9e8af52c2
commit
241fc6c334
@ -2,8 +2,8 @@ package de.danoeh.antennapod.fragment;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
@ -65,6 +65,10 @@ public class QueueFragment extends Fragment {
|
|||||||
private boolean viewsCreated = false;
|
private boolean viewsCreated = false;
|
||||||
private boolean isUpdatingFeeds = false;
|
private boolean isUpdatingFeeds = false;
|
||||||
|
|
||||||
|
private static final String PREFS = "QueueFragment";
|
||||||
|
private static final String PREF_KEY_LIST_TOP = "list_top";
|
||||||
|
private static final String PREF_KEY_LIST_SELECTION = "list_selection";
|
||||||
|
|
||||||
private AtomicReference<Activity> activity = new AtomicReference<Activity>();
|
private AtomicReference<Activity> activity = new AtomicReference<Activity>();
|
||||||
|
|
||||||
private DownloadObserver downloadObserver = null;
|
private DownloadObserver downloadObserver = null;
|
||||||
@ -102,6 +106,18 @@ public class QueueFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
SharedPreferences prefs = getActivity().getSharedPreferences(PREFS, Context.MODE_PRIVATE);
|
||||||
|
SharedPreferences.Editor editor = prefs.edit();
|
||||||
|
View v = listView.getChildAt(0);
|
||||||
|
int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());
|
||||||
|
editor.putInt(PREF_KEY_LIST_SELECTION, listView.getFirstVisiblePosition());
|
||||||
|
editor.putInt(PREF_KEY_LIST_TOP, top);
|
||||||
|
editor.commit();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
@ -313,6 +329,11 @@ public class QueueFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
|
|
||||||
|
SharedPreferences prefs = getActivity().getSharedPreferences(PREFS, Context.MODE_PRIVATE);
|
||||||
|
int listSelection = prefs.getInt(PREF_KEY_LIST_SELECTION, 0);
|
||||||
|
int top = prefs.getInt(PREF_KEY_LIST_TOP, 0);
|
||||||
|
listView.setSelectionFromTop(listSelection, top);
|
||||||
|
|
||||||
// we need to refresh the options menu because it sometimes
|
// we need to refresh the options menu because it sometimes
|
||||||
// needs data that may have just been loaded.
|
// needs data that may have just been loaded.
|
||||||
getActivity().supportInvalidateOptionsMenu();
|
getActivity().supportInvalidateOptionsMenu();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user