Android ListActivity列表在全屏显示时未正确刷新?

Android ListActivity列表在全屏显示时未正确刷新?,android,listview,Android,Listview,我使用ListActivity显示图标化列表(使用BaseAdapter的自定义实现)。它不能正确地重新加载数据。当我更改适配器的内容并通知列表时,似乎旧数据在新数据的顶部绘制,直到发生滚动事件。旧的行在新行的顶部绘制,但是当我开始滚动时,旧的行消失了 但是,如果我将ListActivity样式设置为Theme.Dialog,它会很好地刷新。(大概是因为在对话框中,每次列表内容更改时,活动都会调整大小,从而强制重新绘制整个视图层次结构?) 如何在我的全屏活动中做到这一点 谢谢。您是否尝试在lis

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

但是,如果我将ListActivity样式设置为Theme.Dialog,它会很好地刷新。(大概是因为在对话框中,每次列表内容更改时,活动都会调整大小,从而强制重新绘制整个视图层次结构?)

如何在我的全屏活动中做到这一点


谢谢。

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

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

invalidate()
requestLayout()
forceLayout()
当你的东西被形象化时,你甚至可以这样做(我不知道你的确切意思)。您可以将视图的适配器设置为null或空适配器。空的东西,刚好不让你的活动崩溃。然后,当您想显示ListView时,只需将适配器设置回ListView即可


这可以链接到绘图缓存,但如果您能给我们提供更多信息,那就太好了

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

是的,我尝试过invalidate()和invalidateViews()(都是从ui线程中进行的)。在onRestart()中,清除listview的内容。您是否尝试过notifyDataSetChaned()。似乎符合逻辑。如果你有一个背景色,它会强制你重画所有的东西。虽然如果你有一个透明的背景,你的问题可能会出现。你试过给不可见的东西设置颜色吗。颜色#00ffffffffffa有没有办法强迫它在没有背景的情况下重画?