2010-06-01 95 views
1

我有一个在活动中的ListView的Android应用程序。如果我这么称呼的话,listview有三个数据状态。如何在android listview中滚动工作?

  1. 没有从inet加载的数据 - >只有一个虚拟物品可见,表示数据正在加载;
  2. 数据加载并显示在列表中;
  3. 单击一个listitem,现在显示此listitem的更多信息(因此它的高度增加)。

在每个状态变化(1 - > 2,2 - > 3)上,我在此ListAdapater上调用notifyDataSetChanged()。 这会导致列表视图向下滚动到最后一个项目。这在第一次转换中很丑,在第二次转换中更加难看,因为点击列表项目现在没有焦点。

正如我所看到的,这发生在谷歌G1与Android 1.6。与同样的sdk触摸htc的行为就像所需(我会尝试找出更多的设备)。

为了避免这种情况,我尝试读出getScrollY()并将其设置回来。但是这返回0.这个返回值的原因我已经在其他问题的stackoverflow上找到了。

有没有其他人看到过这个问题?为什么listview滚动到最后一项?有人提到listview会跟踪滚动位置。但它似乎并没有在我的情况下。

或者我可能调用了错误的刷新方法? notifyDataSetChanged是否正确?

回答

0

我相信你想:

listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_DISABLED); 
+0

肯定。这是关键。谢谢。 我读了一下,看到“禁用”是默认行为。所以我不在乎它。现在我试着在相关的布局xml中明确指出它已经在那里设置为“正常”了。 我每次都忽略它,当我试图发现错误的原因... thx再次:) – gartenkralleb 2010-06-02 12:00:35