這個(gè)問(wèn)題,老是記不深刻,雖然常用,所以就寫(xiě)下來(lái),讓自己有空可以回來(lái)看一下。
privatefinalLinkedList?mPositionsList?=newLinkedList();
privatefinalLinkedList?mHeightsList?=newLinkedList();
......
......
在onItemClick(AdapterView?parent,?View?view,intposition,longid)中記錄點(diǎn)擊的位置,以及相對(duì)第一行的位置,
intiFirstPosition?=?mListView.getFirstVisiblePosition()?==0??-1:?mListView
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.getFirstVisiblePosition();
intmToTopHeight?=?(position?-?iFirstPosition)?*?(view.getHeight()?+?mListView.getDivider ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Height())?-?mListView.getDividerHeight();
mPositionsList.add(position);
mHeightsList.add(mToTopHeight);
......
......
在需要恢復(fù)的位置上添加以下代碼:
mListView.setSelectionFromTop(mPositionsList.getLast(),?mHeightsList.getLast());mPositi ? ? ? ? ? ? ? ? ? ? ? ? ?onsList.removeLast();
mHeightsList.removeLast();
當(dāng)前位置相對(duì)于第一個(gè)可顯示的位置的高度是:
(當(dāng)前位置-第一個(gè)顯示在Listview中的位置) * (item項(xiàng)高+分隔符高)? -一個(gè)分隔符的高度
在恢復(fù)位置時(shí)調(diào)用:
mListView.setSelectionFromTop(mPositionsList.getLast(),?mHeightsList.getLast());