购物网站模块是什么意思,网站制作流程一般制作流程?,网站建设任务书,logo制作器工作中遇到一个需求#xff0c;对ListView某一项操作后刷新ListView#xff0c;但是如果直接刷新#xff0c;界面上ListView从第一列开始显示#xff0c;用户体验不好#xff0c;于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下#xff1a; //给ListView设置…工作中遇到一个需求对ListView某一项操作后刷新ListView但是如果直接刷新界面上ListView从第一列开始显示用户体验不好于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下 //给ListView设置监听器
backgroundList.setOnScrollListener(scrollListener);
private OnScrollListener scrollListener new OnScrollListener() {Overridepublic void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {}Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if (scrollState OnScrollListener.SCROLL_STATE_IDLE) {// scrollPos记录当前可见的List顶端的一行的位置 scrollPos myList.getFirstVisiblePosition(); }if (arrayList ! null) { View vmyList .getChildAt(0);scrollTop(vnull)?0:v.getTop();} }};调用setAdapter之后恢复位置
myList .setSelectionFromTop(scrollPos, scrollTop); 参考http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview 之前在网上搜到的有另外两种方法 第一种 在onScrollStateChanged里面 scrolledX listView.getScrollX(); scrolledY listView.getScrollY(); 恢复时使用listView.scrollTo(scrolledX, scrolledY); 但是得到的scrolledY为0 第二种 在onScrollStateChanged里面 position listView.getFirstVisiblePosition(); 用position记录显示在屏幕顶端的一个item 恢复时使用listView.setSelection(position); 但是这种方法不够精确 最后用setSelectionFromTop实现的转载于:https://www.cnblogs.com/cc-Cheng/archive/2012/08/30/2714093.html