Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ListView within fragment cant save scroll position

Tags:

android

How can I save the ListView's scroll position when the ListView is situated within a ListFragment?

like image 244
orchidrudra Avatar asked Nov 29 '22 15:11

orchidrudra


1 Answers

Finally I solved the problem, so I decided to post the solution for others:

Within my ListFragment sub class 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 the onPause() and onResume() to save and restore the ListView's scroll positions 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();
      }
      ......................
      ......................                    
}

That's it!! I hope this will help some one. :)

like image 115
orchidrudra Avatar answered Dec 20 '22 18:12

orchidrudra