ListView within fragment cant save scroll position

后端 未结 4 1095
北海茫月
北海茫月 2020-12-15 01:52

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

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-15 02:18

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

提交回复
热议问题