2013-03-15 61 views
1

我有一個Android應用程序,它具有我經常更新的內容提供程序。要加載上述數據的列表,我使用了一個LoaderManager。即使特定查詢與更新不匹配,也會調用LoaderManager.onLoadFinished

在詳細信息頁面,我也使用LoaderManager,但我創建這樣的CursorLoader:

return new CursorLoader(getActivity(), DataProvider.POST_URI, projection, "_id = ?", new String[]{String.valueOf(post_id)}, null); 

正如你所看到的,我只能從表中獲取單個項目。當行更新時,onLoadFinished回調被更新,但是,當其他行被添加/修改到表中時也是如此。它不會太麻煩,但有時候,它會導致整個列表變得空白並重新繪製,這可能會讓用戶在發生多次時感到沮喪。

你知道我該如何避免這種行爲?

回答

3

重新加載正在發生,因爲您正在將此遊標加載器與DataProvider.POST_URI關聯,我認爲這是您用於發佈帖子的表。每當表格中的任何元素髮生變化時,將會通知所有具有該Uri的遊標。如果你想收到一個單一項目的通知,你應該實施一個新的Uri方案來匹配這個項目。例如,查看UriMatcher類的文檔。你應該做一些類似於PEOPLEPEOPLE_ID的情況。

編輯

您可以在ContentProviderhere找到一個很好的教程。特殊條款9.4應該有助於正確實施ContentProvider

相關問題