做到一个需求,一个listview,两个数据源切换.这就需要在切换前保存当前的listview的状态,切换回来的时候,还原状态.找了一下午,发现使用listview.getScrollY(),方法一直获取的值为0.无法保存状态. 这种方法也就行不通了.
最终用以下方式实现了,记录状态(主要记录当前显示的第一个item,和该item的位置):
int index = listView.getFirstVisiblePosition();
View childAt1 = listView.getChildAt(0);
int diff = childAt1 == null ? 0 : childAt1.getTop();
状态还原,只要一句代码便可实现:
listView.setSelectionFromTop(index, diff);