android ListView 滑动进度保存和恢复

    xiaoxiao2021-03-25  151

     

    这里只写一种方法,直接利用Google推荐的方法。 举个例子就是: 做一个文件管理器,当进入子目录,然后返回后仍然能准确恢复之前的位置;具体方法就是 获取第一个可见的item的位置,再获取这个item对应view距离顶端的距离,然后调用listview.setSelectionFromTop(index,top); 即可。 下面是例子的部分代码 private List<int[][]> stringsX_Y;//用来记录index  和   top; private View.OnClickListener onBackClickListener=new View.OnClickListener() {//返回上文件目录后调用listView_fileList.setSelectionFromTop(); ...................... listView_fileList.setSelectionFromTop(stringsX_Y.get(stringsX_Y.size()-1)[0][0], stringsX_Y.get(stringsX_Y.size()-1)[0][1]);//返回上一个目录后调用         stringsX_Y.remove(stringsX_Y.size()-1);  }; //下面就是通过监听Listview滑动来动态获取index 和 top; // save index and top position     int index=0 ;     int top=0 ;     private AbsListView.OnScrollListener onScrollListener=new AbsListView.OnScrollListener() {         @Override         public void onScrollStateChanged(AbsListView view, int scrollState) {             if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {                 index = listView_fileList.getFirstVisiblePosition();                 View v = listView_fileList.getChildAt(0);                 top = (v == null) ? 0 : v.getTop();             }         }         @Override         public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {         }     }; //下面是当点击文件夹时进入子目录,在这个时候就应该记录之前listview的状态index和top; private AdapterView.OnItemClickListener onItemClickListener=new AdapterView.OnItemClickListener() {         @Override         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {             int[][] strings=new int[1][2];             strings[0][0]=index;             strings[0][1]=top;             stringsX_Y.add(strings);         }     };  

     

    转载请注明原文地址: https://ju.6miu.com/read-4857.html

    最新回复(0)