ListView如何滚动和恢复到某个位置

时间:2022-08-25 06:23:55

http://androidren.com/index.php?qa=365&qa_1=listview%E5%A6%82%E4%BD%95%E6%BB%9A%E5%8A%A8%E5%92%8C%E6%81%A2%E5%A4%8D%E5%88%B0%E6%9F%90%E4%B8%AA%E4%BD%8D%E7%BD%AE


1、ListView.getScrollY() 这个一般一直是0,所以不能用这个方法。


2、ListView.getLocationOnScreen()或者ListView.getLocationInWindow() 这两个方法是可以的。
/**
* 滚动状态改变时调用
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 不滚动时保存当前滚动到的位置
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
int pos[] = { -1, -1 };  //保存当前坐标的数组x,y
position = view.getLocationOnScreen(pos);
}
}


ListView.scrollTo(x,y); // 恢复刚才的位置


3、ListView.getFirstVisiblePosition()这个是得到可见Item位置的。


/**
* 滚动状态改变时调用
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 不滚动时保存当前滚动到的位置
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
position = view.getFirstVisiblePosition();
}
}


ListView.setSelection(position); // 恢复刚才的位置