Android中ListView中如何進行精確的定位?

這個問題,老是記不深刻,雖然常用,所以就寫下來,讓自己有空可以回來看一下。

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());

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容