我有一个在 Activity 中带有 ListView 的 android 应用程序。如果我这样称呼 ListView ,它具有三种数据状态。
- 没有从 inet 加载数据 -> 只有一个虚拟项可见,表示正在加载数据;
- 数据已加载并显示在列表中;
- 点击一个列表项,现在显示该列表项的更多信息(因此它的高度增加)。
在每次状态更改时(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/