有时我们希望从其他界面返回的时候ListView能够恢复到上次查看的位置,解决办法如下:
// 保存当前第一个可见的item的索引和偏移量
int index = mchapterlistView.getFirstVisiblePosition();
View v = mchapterlistView.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
//根据上次保存的index和偏移量恢复上次的位置
mlistView.setSelectionFromTop(index, top);
这里使用setSelectionFromTop来定位ListView,setSelection方法也可以用于定位,只是setSelectionFromTop更精准。因为得到的item可能已经有一部分是不可见了,如果用selSelection无法反映出不可见的这部分。