2011-02-07 20 views
1

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

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

任何想法如何使这项工作在我的全屏活动中?

谢谢。

回答

1

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

2

你试过在你的listView上调用invalidate()吗?

这里有一些功能,你可以尝试:

invalidate() 
requestLayout() 
forceLayout() 

你甚至可以做到这一点,当你的东西图标化(我没有你的意思到底是什么)。您可以将视图的适配器设置为null或空适配器。空的东西足以让你的活动不会崩溃。然后,当你想显示你的ListView时,只需将适配器设置回它即可。

这可能与绘图缓存相关联,但如果您可以给我们提供更多信息,那就太好了。

+0

是的,我试过invalidate()和invalidateViews()(都来自UI线程)。 – ab11 2011-02-07 15:44:35

+0

在onRestart()清除listview的内容。你尝试过使用notifyDataSetChaned()吗? – Vivek 2011-02-07 15:58:50