Android 列表视图中的滚动是如何工作的?

2024-01-31

我有一个 android 应用程序,在活动中有一个列表视图。如果我这么称呼的话,列表视图具有三种数据状态。

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

每次状态更改(1 -> 2、2 -> 3)时,我都会在此 ListAdapter 上调用 notificationDataSetChanged()。 这会导致列表视图向下滚动到最后一项。这在第一个转换中很丑陋,在第二个转换中更丑陋,因为单击的列表项现在失去了焦点。

正如我所看到的,这种情况发生在带有 android 1.6 的 google g1 上。具有相同 sdk 的 htc touch 的行为就像所期望的那样(我将尝试使用更多设备来解决这个问题)。

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

还有其他人看到这个问题吗?为什么列表视图滚动到最后一项?有人提到列表视图会跟踪滚动位置。但在我看来,情况并非如此。

或者也许我调用了错误的刷新方法? notifyDataSetChanged 是正确的吗?


我相信你想要:

listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_DISABLED);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 列表视图中的滚动是如何工作的? 的相关文章