首页 > 代码库 > [Android Pro] 精确记录和恢复ListView滑动位置
[Android Pro] 精确记录和恢复ListView滑动位置
reference to : http://blog.csdn.net/welovesunflower/article/details/7926512
工作中遇到一个需求,对ListView某一项操作后刷新ListView,但是如果直接刷新,界面上ListView从第一列开始显示,用户体验不好,于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下:
1 :
// 设置ListView到记录的位置 mListView.setSelection(mPosition); mListView.setOnScrollListener(new OnScrollListener() { // 滚动状态改变时调用 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 不滚动时保存当前滚动到的位置 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { mPosition = mListView.getFirstVisiblePosition(); } } // 滚动时调用 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
2:
//给ListView设置监听器backgroundList.setOnScrollListener(scrollListener);private OnScrollListener scrollListener = new OnScrollListener() { @Override public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) { } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { // scrollPos记录当前可见的List顶端的一行的位置 scrollPos = myList.getFirstVisiblePosition(); } if (arrayList != null) { View v=myList .getChildAt(0); scrollTop=(v==null)?0:v.getTop(); } } };调用setAdapter之后恢复位置:myList .setSelectionFromTop(scrollPos, scrollTop);
[Android Pro] 精确记录和恢复ListView滑动位置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。