Android學習記錄(二十七)--ListView重新整理記錄滑動位置的實現。
阿新 • • 發佈:2019-01-10
在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);