1

我正在實現兩個片段,以在從ContentProvider檢索的同一個表上顯示不同視圖:1 /擴展ListFragment以提供列表中的數據的類 2 /自定義片段類包含Google Maps v2片段從ContentProvider更新自定義片段

列表片段是一個使用加載器和SimpleContentAdapter的標準實現,因此當在單獨的活動中編輯列表項的名稱時,更改會反映回列表中。

我想對自定義片段做類似的事情,以便在數據更改時創建和更新地圖標記。

這樣做的最佳做法是什麼?

看來使用SimpleCursorAdapter將不起作用,因爲它返回View對象,而我需要創建/更新Marker對象,而這些不是從View派生的。我正在考慮創建自己的CursorAdapter類,在我的地圖片段容器上實現ContentObserver並將其註冊到CursorAdapter。這是最佳做法嗎?有誰知道展示最佳實踐的任何示例代碼?

對不起,如果這是一個愚蠢的問題 - 我是Android編程的新手,所以沒有完全清楚通知體系結構 - 但我已經嘗試閱讀這個主題無濟於事。

回答

0

好的,我已經找出了答案。不需要CursorAdapter或ContentObserver。步驟如下: 1 /創建片段派生類(在我的情況下派生自MapFragment) 2 /在此類上實現LoaderCallbacks 3 /調用此類的onCreate()覆蓋中的getLoaderManager.initLoader() 4 /在LoaderCallbacks.onCreateLoader()覆蓋中創建一個新的CursorLoader()。在LoaderCallbacks.onLoadFinished()中,調用代碼來遍歷遊標並填充視圖。但不要關閉遊標,否則你不會收到進一步的更新!

我的問題源於調整一些示例代碼,其中cursor.Close()在列表填充後被調用。我想好的做法是將遊標保存在私有數據成員中,並在調用LoaderCallbacks.onLoaderReset()時將其關閉。