很多时候开发listview,如果每个Item比较大,在来回切换界面的时候,会出现不能记录滑动位置的情况,影响客户体验。。
这时候需要精确记录一下listveiw的滑动位置。
privateOnScrollListener scrollListener = newOnScrollListener() {
@Override
publicvoid onScroll(AbsListView arg0, intarg1, intarg2, intarg3) {
}
@Override
publicvoid onScrollStateChanged(AbsListView view, intscrollState) {
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
scrollPos = myList.getFirstVisiblePosition();
}
if(arrayList != null) {
View v=myList .getChildAt(0); //这里注意,index为0。这个方法的作用是找到当前正在显示的子View编号,而不是对整个listview而言的
scrollTop=(v==null)?0:v.getTop();
}
}
};
调用setAdapter之后恢复位置:
myList .setSelectionFromTop(scrollPos, scrollTop);
|