2011-05-22 140 views
3

目前我做到以下幾點:如何在數據庫值更改的情況下更新ListView?

1)數據庫鏈接到ListView控件:

String[] from = new String[]{DbAdapter.KEY_TITLE, 
       DbAdapter.KEY_DISPLAYED_VALUE, 
       DbAdapter.KEY_FAVORITE}; 
int[] to = new int[]{R.id.name, R.id.time, R.id.icon}; 
items = new SimpleCursorAdapter(this, R.layout.row, itemsCursor, from, to); 

2)KEY_DISPLAYED_VALUE在數據庫中每2秒改變。然後調用items.notifyDataSetChanged()。但屏幕上的數據沒有更新(R.id.time目前爲TextView,一旦此代碼有效,將爲TextSwitcher)。

數據庫更新爲execSQL

回答

3

那麼這是因爲你的光標中的數據沒有改變。在你的情況下最簡單的事情就是調用一個新的查詢,並在每次更新數據庫中的某個值時更改列表的光標(可能有通過廣播或類似的方式通知的方法)。另一種方式是通過在查詢中註冊遊標上的通知uri(請參閱android中關於使內容提供者特別是插入方法的記事本項目示例)。

然而,通過走autorequery(記事本內容提供者方式)您將收到每個查詢的通知,因此會刷新每個項目的列表,並且您說數據庫每2秒更新一次可能太頻繁,並且您可能會阻止ui線程使您的應用程序無響應,因此我建議管理自己的刷新時間(我認爲像每5秒一次將正常工作)。

希望這有助於編碼快樂。

相關問題