工做中遇到一個需求,對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