Android LoaderManager ContentProvider并通过网络加载数据

时间:2013-04-05 18:00:04

标签: android rest networking android-contentprovider

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

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

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

在ContentProvider上的每个查询之后,一个线程开始同步来自网络的请求数据,它加载json对象,解析并将新数据保存到数据库 - 一切都很好,但UI没有更新。

我想我必须向我的Activity发送一条消息来刷新数据,但我不知道怎么也找不到如何做的例子。

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

----更新----

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:0)

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

通过调用

在CursorLoader.onLoadFinished()中执行此操作

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

查看Android培训课程 Loading Data in the Background以获得完整的示例。

答案 1 :(得分:0)

我找到了解决方案。我在ContentProvider中重载了insert()。所以我可以给它ContentValues,CP正在向db写入数据。 CP向Views发送通知。 它经过测试和运行。我在“Android编程”一书中找到了这个。