android - 在 android ListView 中滚动如何工作?

标签 android listview layout

我有一个在 Activity 中带有 ListView 的 android 应用程序。如果我这样称呼 ListView ,它具有三种数据状态。

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

在每次状态更改时(1 -> 2、2 -> 3),我都会在此 ListAdapater 上调用 notifyDataSetChanged()。 这会导致 ListView 向下滚动到最后一项。这在第一个转换中很难看,在第二个转换中更难看,因为点击的列表项现在不在焦点内。

如我所见,这发生在装有 android 1.6 的 google g1 上。具有相同 sdk 的 htc touch 可以正常工作(我将尝试使用更多设备来解决这个问题)。

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

还有其他人遇到过这个问题吗?为什么 ListView 滚动到最后一项?有人提到 listview 会跟踪滚动位置。但我的情况似乎并非如此。

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

最佳答案

我相信你想要:

listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_DISABLED);

关于android - 在 android ListView 中滚动如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2949994/

相关文章:

android - 如何让 Android 翻译 boolean 值?

android - 圆形 ImageView 显示方形图像

android - 如何更改简单列表项的文本颜色

android - 您可以在 Activity XML 文件中没有 ListView 项的情况下搜索 ListView 吗? (安卓)

javascript - 基于自动图像检索系统生成自动链接(Freewall.js - 网格布局)

Android:强制更新布局

android - AgentDetailsActivityBindingImpl 类中所需的 DataBindingComponent 为空

android - Google 云端硬盘和 Android - 读取失败 : EBADF (Bad file number)

Android 复选框删除

c++ - QScrollArea 与动态调整 subWidgets