Android--记录和恢复listView滚动位置的3种方法
来源:互联网 发布:手机淘宝宝贝链接在哪 编辑:程序博客网 时间:2024/04/29 07:35
转载自:http://blog.sina.com.cn/s/blog_7bac470701014530.html
有时在view切换时,需要恢复listView之前滚动到的位置,常用的三种方法如下:
1、记录listView滚动到的位置的坐标,然后利用listView.scrollTo精确的进行恢复
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
if (currentMenuInfo!=null) {
scrolledX = listView.getScrollX();
scrolledY = listView.getScrollY();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢复位置时调用:
listView.scrollTo(scrolledX, scrolledY);
2、记录listView显示在屏幕上的第一个item的位置,然后利用listView.setSelection恢复
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
position = listView.getFirstVisiblePosition();
}