1

我正在实现两个片段以在从 ContentProvider 检索的同一个表上显示不同的视图: 1/ 扩展 ListFragment 以在列表中提供数据的类 2/ 自定义片段类,它本身包含 Google Maps v2 片段

列表片段是使用加载器和 SimpleContentAdapter 的标准实现,因此当在单独的活动中编辑列表项的名称时,更改会反映在列表中。

我想对我的自定义片段做类似的事情,以便随着数据的变化创建和更新地图标记。

这样做的最佳做法是什么?

使用 SimpleCursorAdapter 似乎不起作用,因为它返回 View 对象,而我需要创建/更新 Marker 对象,而这些对象不是从 View 派生的。我正在考虑创建自己的 CursorAdapter 类,在我的地图片段容器上实现 ContentObserver 并将其注册到 CursorAdapter。这是最佳实践吗?有谁知道任何演示最佳实践的示例代码?

抱歉,如果这是一个愚蠢的问题——我是 Android 编程的新手,所以对通知架构并不完全清楚——但我尝试阅读该主题但无济于事。

4

1 回答 1

0

好的,我已经想出了这个问题的答案。不需要 CursorAdapter 或 ContentObserver。步骤如下: 1/ 创建 Fragment 派生类(在我的情况下从 MapFragment 派生) 2/ 在此类上实现 LoaderCallbacks 3/ 在此类的 onCreate() 覆盖中调用 getLoaderManager.initLoader() 4/ 创建一个新的 CursorLoader () 在您的 LoaderCallbacks.onCreateLoader() 中覆盖 5/ 在 LoaderCallbacks.onLoadFinished() 中,调用代码以迭代光标并填充您的视图。但不要关闭光标,否则您将不会收到进一步的更新!!!

我的问题源于修改了一些示例代码,其中一旦填充了列表,就会调用 cursor.Close()。我想好的做法是将光标保存在私有数据成员中,并在调用 LoaderCallbacks.onLoaderReset() 时将其关闭。

于 2013-02-13T17:47:22.060 回答