Android--記錄和恢復listView滾動位置的3種方法
阿新 • • 發佈:2019-01-14
有時在view切換時,需要恢復listView之前滾動到的位置,常用的三種方法如下:
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
if (currentMenuInfo!=null)
{
scrolledX = listView.getScrollX();
scrolledY = listView.getScrollY();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢復位置時呼叫:
listView.scrollTo(scrolledX, scrolledY);
1、記錄listView滾動到的位置的座標,然後利用listView.scrollTo精確的進行恢復
listView.setOnScrollListener(new OnScrollListener() {@Override
if (currentMenuInfo!=null)
scrolledX = listView.getScrollX();
scrolledY = listView.getScrollY();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢復位置時呼叫:
listView.scrollTo(scrolledX, scrolledY);
2、記錄listView顯示在螢幕上的第一個item的位置,然後利用listView.setSelection恢復
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
position = listView.getFirstVisiblePosition();
}