工做中遇到一个需求,对ListView某一项操做后刷新ListView,可是若是直接刷新,界面上ListView从第一列开始显示,用户体验很差,因而在网上搜了一些恢复LIstView滑动位置的方法。解决办法以下: java
参考:http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview
以前在网上搜到的,有另外两种方法
第一种:
在onScrollStateChanged里面 ide
scrolledX = listView.getScrollX(); spa
scrolledY = listView.getScrollY(); .net
恢复时使用listView.scrollTo(scrolledX, scrolledY); blog
可是获得的scrolledY为0
第二种:
在onScrollStateChanged里面 get
position = listView.getFirstVisiblePosition(); it
用position记录显示在屏幕顶端的一个item, io
恢复时使用listView.setSelection(position); 用户体验
可是这种方法不够精确
最后用setSelectionFromTop实现的 List