Finally, I solved the problem, so I decided to post the solution to others:
In my subclass of ListFragment, I declared two int variables to hold the scroll position
public static class MyListFragment extends ListFragment { ...................... ...................... private int index = -1; private int top = 0; ......................
Then override onPause () and onResume () to save and restore the scroll positions of the ListView as follows:
@Override public void onResume() { super.onResume(); ...................... ...................... setListAdapter(mAdapter); if(index!=-1){ this.getListView().setSelectionFromTop(index, top); } ...................... ...................... } @Override public void onPause() { super.onPause(); try{ index = this.getListView().getFirstVisiblePosition(); View v = this.getListView().getChildAt(0); top = (v == null) ? 0 : v.getTop(); } catch(Throwable t){ t.printStackTrace(); } ...................... ...................... }
What is it! Hope this helps someone. :)
source share