全屏时ListActivity列表无法正确刷新?

时间:2011-02-07 15:31:51

标签: android listview

我正在使用ListActivity来显示图标化列表(使用BaseAdapter的自定义实现)。它不会正确地重新加载数据。当我更改适配器的内容并通知列表时,似乎旧数据在新数据之上绘制,直到滚动事件发生。旧行绘制在新行的顶部,但是当我开始滚动时,旧行会消失。

但是,如果我将ListActivity样式设置为Theme.Dialog,它会刷新。 (大概是因为在对话框中,每次列表内容发生变化时活动会调整大小,这会强制重绘整个视图的层次结构吗?)

如何在全屏活动中完成这项工作?

感谢。

2 个答案:

答案 0 :(得分:2)

您是否尝试在listView上调用invalidate()?

以下是您可以尝试的一些功能:

invalidate()
requestLayout()
forceLayout()

当你的东西被图标化时,你甚至可以这样做(我不完全是你的意思)。您可以将视图的适配器设置为null或空适配器。空的东西足以让你的活动崩溃。然后,当您想要显示ListView时,只需将适配器设置回它即可。

这可能与绘图缓存相关联,但如果您可以提供更多信息,那将是一件好事。

答案 1 :(得分:1)

奇怪的是,如果我设置背景颜色,一切都会正常刷新。如果没有背景颜色,我会收到原始帖子中描述的刷新问题。