Android ListView在第一次滚动后重置滚动位置

时间:2013-07-12 15:54:48

标签: android android-listview scroll android-4.2-jelly-bean

我在Android(JB)应用程序中有一个列表视图,其中单击一行将用另一个视图替换列表视图。

按下单独的按钮,将列表视图添加回活动(想法是父容器在列表视图和单行内容之间切换。)

当我滚动到靠近底部的一行并按下它(替换列表视图)时,会出现问题。点击另一个按钮再次显示列表视图后,一切看起来都很好(包括行状态和滚动位置)。但是当我再次尝试滚动时,它会将列表视图重置为顶部。滚动后正常工作。

列表视图的数据源根本不会更改。奇怪的是,如果我更改平板电脑的方向,那么第一次滚动不会将列表视图重置为顶部。

我猜测它与删除视图然后添加回相同的视图(通过在父节点上调用removeAllViews和addView来完成)有关。

1 个答案:

答案 0 :(得分:0)

我不确定,但我认为当你因为某种原因调用removeAllViews时它无法保存以前的状态。 我不确定它是否是解决问题的最佳方法,但你可以做的是在删除它之前保存你的滚动位置,再次添加你的视图后你可以设置它。

这样的事情:

int posX = listView.getScrollX();
//remove your view

之后:

//add your views
listView.setScrollX(posX);