Android--记录和恢复listView滚动位置的3种方法
来源:互联网 发布:数据直报系统是什么 编辑:程序博客网 时间:2024/04/29 10:14
有时在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();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢复位置时调用:
listView.setSelection(position);
3、通知listView的适配器数据变更
这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错
listDataAdapter.getDataList.addAll(newDataList());
listDataAdapter.notifyDataSetChanged();
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();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢复位置时调用:
listView.setSelection(position);
3、通知listView的适配器数据变更
这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错
listDataAdapter.getDataList.addAll(newDataList());
listDataAdapter.notifyDataSetChanged();
0 0
- Android 记录和恢复ListView滚动的位置的方法
- Android--记录和恢复listView滚动位置的3种方法
- Android--记录和恢复listView滚动位置的3种方法
- Android--记录和恢复listView滚动位置的3种方法
- Android--记录和恢复listView滚动位置的3种方法 (20
- 记录和恢复listView滚动位置的2种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的三种方法(转)
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的两种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的三种方法
- Android 记录和恢复ListView滚动的位置的两种方法
- android 记录和恢复ListView滚动的位置 四种方法
- android记录和恢复ListView滚动的位置
- android libs文件夹中的jar包关联doc
- 为什么广州传智播客PHP网站培训分为基础班和就业班
- CSS 和 JavaScript 标签 style 属性对照表
- mysql 完全删除
- 性能问题案例01——sybase数据库内存问题
- Android--记录和恢复listView滚动位置的3种方法
- 靓丽打造立体质感多边形星光宝石之教程
- 利用扩展双屏技术及Chrome浏览器,快速剖析优秀网页Div及CSS构成,并高效实现原型创作
- 如何做一个软件需求分析师
- json与lua的交互源码
- 蹭网还是手机3G,都要注意了
- Block之自定义与回调
- 常用Xcode插件
- 关于UIWebView和PhoneGap的总结