[Android算法] 精确记录和恢复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) { // ListPos记录当前可见的List顶端的一行的位置 scrollPos = myList.getFirstVisiblePosition(); } if (arrayList != null ) { View v=myList .getChildAt( 0 ); scrollTop=(v== null )? 0 :v.getTop(); } } }; |
调用setAdapter之后恢复位置:
myList .setSelectionFromTop(scrollPos, scrollTop); |
参考:http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview
路漫漫其修远兮 吾将上下而求索