【问题标题】:Android LoaderManager ContentProvider and loading data over networkAndroid LoaderManager ContentProvider 和通过网络加载数据
【发布时间】:2013-04-05 18:00:04
【问题描述】:

我搜索过 StackOverflow 并用 Google 搜索,但找不到答案。

我正在尝试使用 Virgil Dobjanschis Designpattern B (http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html) 构建一个 REST 服务

我有一个带有 SimpleCursorAdapter 和 LoaderManager 的活动来查询 ContentProvider。这适用于我的数据库中的数据。重新查询数据并刷新 UI。

在 ContentProvider 上的每个查询之后,都会启动一个线程来同步来自网络的请求数据,它会加载 json-objects、解析并将新数据保存到数据库 - 一切正常,但 UI 没有更新。

我认为我必须向我的 Activity 发送消息以刷新数据,但我不知道如何操作,也找不到如何执行此操作的示例。

那么,管理这个问题的正确方法是什么?

----更新----

我想我没有清楚地解释我的问题。 正如你在这张图片中看到的:

第 7 步正在运行。 Helper 类正在更新数据。 步骤 7' 不会发生。我认为这将是 ContentProvider 的自动功能。

我的 Helper-class (Resthandler) 正在直接更新数据库而不使用 ContentProvider。

【问题讨论】:

    标签: android rest networking android-contentprovider


    【解决方案1】:

    你有一个 SimpleCursorAdapter,我想你用它来将数据从内容提供者绑定到你的 UI,对吗?如果是这样,那么每次更新游标时都需要将检索到的游标移动到游标适配器。

    在 CursorLoader.onLoadFinished() 中执行此操作,方法是调用任一

    SimpleCursorAdapter.swapCursor() 或 SimpleCursorAdapter.changeCursor()。

    查看 Android 培训课程 Loading Data in the Background 一个完整的例子。

    【讨论】:

    • 谢谢,但这不是我的问题的解决方案。正如我所提到的,如果数据已经在我的数据库中,则加载器和 UI 的刷新工作。刷新不适用于同步到我的数据库的新数据。
    • 我已经找到了解决方案。我在 ContentProvider 中重载了 insert()。所以我可以给它 ContentValues 并且 CP 正在将数据写入 db。 CP 向 Views 发送通知。
    【解决方案2】:

    我已经找到了解决方案。我在 ContentProvider 中重载了 insert()。所以我可以给它 ContentValues 并且 CP 正在将数据写入 db。 CP 向视图发送通知。 它已经过测试并且可以正常工作。我在“Android 编程”一书中找到了这一点。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多