返回 ListView 时保持/保存/恢复滚动位置

本教程将介绍返回 ListView 时保持/保存/恢复滚动位置的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

返回 ListView 时保持/保存/恢复滚动位置 教程 第1张

问题描述

我有一个很长的 ListView,用户可以在返回前一个屏幕之前滚动它.当用户再次打开此 ListView 时,我希望将列表滚动到与之前相同的位置.关于怎么实现这一点的任何想法?

推荐答案

试试这个:

// save index and top position
int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());

// ...

// restore index and position
mList.setSelectionFromTop(index, top);

说明:

ListView.getFirstVisiblePosition() 返回顶部可见列表项.但是这个item可能会被部分滚动出视图,如果你想恢复列表的确切滚动位置你需要得到这个偏移量.所以 ListView.getChildAt(0) 返回顶部列表项的 View,然后 View.getTop() - mList.getPaddingTop()返回它与 ListView 顶部的相对偏移量.然后,为了恢复 ListView 的滚动位置,我们调用 ListView.setSelectionFromTop() 并使用我们想要的项目的索引和一个偏移量来定位它的顶部边缘.ListView 的顶部.

好了关于返回 ListView 时保持/保存/恢复滚动位置的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。