1. 程式人生 > >Android學習記錄(二十七)--ListView重新整理記錄滑動位置的實現。

Android學習記錄(二十七)--ListView重新整理記錄滑動位置的實現。

在listview中實現檔案系統時,目錄層級跳轉,採用activity跳轉的話,壓棧可能會非常的多,這種實現是不合理的。

如果不壓棧的話,如果回退到上一次目錄,就需要記錄上一次滑動的位置。本文記錄一下記錄滑動位置的實現。

實現方法:

1.記錄跳轉時的滑動位置。

這個比較講究,實際使用時,發現如果記錄的純座標用scrollto的方法來滑動時,listview會有滑動跳變,滑動位置不準確的問題。

如果只記錄頂部的元素,不記錄偏移,會有一定的偏移。

本例中是同時記錄頂部元素的index和對應的偏移。

具體的程式碼如下:
public ScrollLocation getScrollY() {
    View c = listView
.getChildAt(0); if (c == null) { return null; } int firstVisiblePosition = listView.getFirstVisiblePosition(); int top = c.getTop(); ScrollLocation location=new ScrollLocation(); location.position=firstVisiblePosition; location.scrolly=top; return location; }

2.listview 回退的時候,返回上一層記錄的位置。

listview有如下的方法實現位移,實際使用該方法比較好。

listView.setSelectionFromTop(position,scrolly);