這個問題,老是記不深刻,雖然常用,所以就寫下來,讓自己有空可以回來看一下。
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());