2011-11-29 74 views
0

我有一個帶有文本和按鈕的列表視圖。列表視圖(文本)的內容從SQLite數據庫中提取。我已經實現了這樣的代碼,如果任何人單擊按鈕,該列表項的相應標誌在數據庫表中發生變化。我的意圖是,只要標誌在數據庫表中被更改,相應的列表項就會從列表中消失。無法從列表中刪除項目後實時刷新列表視圖

目前,我能夠更改列表項(表中的相應列更新成功)標誌值,但該列表項仍保留在列表視圖,直到我重新打開應用程序。列表項然後根據需要消失。

只要我按一下按鈕有沒有一種方法,使得和標誌值的背景發生變化時,列表刷新,並告訴我只有列表中的其他項目?

您的幫助將不勝感激。提前致謝。

+0

從數據庫中刪除的項目是否也從列表中刪除? –

+1

構建ContenProvider和使用CursorLoader從V4 COMPAT LIB(看SDK樣本)...你應該在你的更新/插入用的getContext()。getContentResolver()。有NotifyChange(...)/刪除實施的ContentProvider和刷新的東西會在CursorLoader(自動註冊更改和重新查詢)中完成...這就是「android方式」...您甚至可以不使用CursorLoader ...它將自動使用不推薦的重新查詢...因此唯一的代碼是您需要編寫ContentProvider – Selvin

+0

...不要忘記在您的ContentProvider的查詢實現中添加return_cursor.setNotificationUri(getContext()。getContentResolver(),uri)...(請參閱您的sdk文件夾中的NotePad示例) – Selvin

回答

0

非常感謝您的回覆。我試圖用android的方式來做,但似乎有點複雜。因此,爲了在更新列表之後刷新列表視圖,我使用意圖重新調用活動,這樣我將得到一個新增列表視圖,並添加或刪除列表條目。

希望我會很快找到其他解決方案的解決方案。

2

你需要改變數據源後,什麼做一個requery()

- 編輯 -

就發現,重新查詢被貶,但無論如何,這個想法是一樣的。查詢另一個新的遊標,並將其設置爲CursorAdapter(如果您正在使用它)。

0
  1. 查詢與新光標並設置導致的CursorAdapter
  2. 無效()現有列表視圖
0

一般來說,對於一個ListView,你必須爲ListView準備適配器提供ListView中每個項目的內容。 基本的想法是,爲了刷新列表視圖,你必須致電adapter.notifyDataSetChanged()要求更新。

0
getLoaderManager().restartLoader(0, null, this);