0

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

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

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

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

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

4

1 回答 1

0

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

像这样的东西:

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

之后:

//add your views
listView.setScrollX(posX);
于 2013-07-12T18:08:03.973 回答