这个问题,老是记不深刻,虽然常用,所以就写下来,让自己有空可以回来看一下。
privatefinalLinkedList mPositionsList =newLinkedList();
privatefinalLinkedList mHeightsList =newLinkedList();
......
......
在onItemClick(AdapterView parent, View view,intposition,longid)中记录点击的位置,以及相对第一行的位置,
intiFirstPosition = mListView.getFirstVisiblePosition() ==0? -1: mListView
.getFirstVisiblePosition();
intmToTopHeight = (position - iFirstPosition) * (view.getHeight() + mListView.getDivider Height()) - mListView.getDividerHeight();
mPositionsList.add(position);
mHeightsList.add(mToTopHeight);
......
......
在需要恢复的位置上添加以下代码:
mListView.setSelectionFromTop(mPositionsList.getLast(), mHeightsList.getLast());mPositi onsList.removeLast();
mHeightsList.removeLast();
当前位置相对于第一个可显示的位置的高度是:
(当前位置-第一个显示在Listview中的位置) * (item项高+分隔符高) -一个分隔符的高度
在恢复位置时调用:
mListView.setSelectionFromTop(mPositionsList.getLast(), mHeightsList.getLast());
网友评论