我在ListActivity中有一個綁定到某些數據的ListView。我有一個提供數據的內容提供者。Android ListView實時更新
的ListActivity通過查詢內容解析器得到數據:
Uri uri = Uri.parse("content://my.provider.DocumentProvider/mystuff");
contentCursor = this.getContentResolver().query(uri, null, null, null, null);
所以,現在的活動有光標。它創建一個適配器,並將其附加到列表中:
ListAdapter adapter = new DocumentListCursorAdapter(this, R.layout.main_row_layout, contentCursor, new String[] { "titleColumn" }, new int[] { titleColumnIndex });
setListAdapter(adapter);
This works fine;該列表顯示光標中的數據。
但現在內容提供商有新的數據。我想要更新列表以顯示新數據。
我見過的例子涉及調用適配器的notifyDataSetChanged,但在我看來,這打破了內容提供者和消耗內容的列表之間的分離。
內容提供者是否需要知道哪些適配器連接到了光標,以便它可以調用它們的notifyDataSetChanged方法?或者有沒有更好的方式,沒有看到這兩種方式耦合這種方式。
你看過http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange%28android.net.Uri,%20android.database.ContentObserver,%20boolean%29? – Luksprog 2012-03-09 14:29:38
我曾嘗試使用registerContentObserver進行註冊,但在光標更改時未看到更改。應該這樣做嗎? – stevex 2012-03-09 14:42:23
與slukian相同,再加上你可能需要'contentCursor.setNotificationUri(cr,uri);' – njzk2 2012-03-09 14:44:41