2011-02-07 19 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