你的位置:首页 > 操作系统

[操作系统]保持listview当前位置


保持listview滑动的位置,一般用在增加listview子item中布局的评论或者退出当前活动,再次进入继续阅读时。

 

  利用ListView.getFirstVisiblePosition()来获取当前可见的第一个Item的position,在滚动监听中设置

  @Override  public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {    this.firstVisibleItem = firstVisibleItem;    this.lastVisibleItem = firstVisibleItem + visibleItemCount;    this.totalItemCount = totalItemCount;  }  @Override  public void onScrollStateChanged(AbsListView view, int scrollState) {    this.scrollState = scrollState;    if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {      position = this.getFirstVisiblePosition();//获取在总的列表条数中的索引编号      View firstVisibleItem = this.getChildAt(0);//获取在可视的第一个列表项      scrolledY = firstVisibleItem.getTop();//获取第一个列表项相对于屏幕顶部的位置    }  }

其中存储position和scrolledY,并在关键位置调用

 listView.setSelectionFromTop(position, scrolledY);(api 21)


调用上个方法就可以恢复listview 当前位置了。