Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
495 views
in Technique[技术] by (71.8m points)

android - ListView within fragment cant save scroll position

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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. :)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...