1

我有一个 Android 应用程序,它有一个我经常更新的内容提供程序。为了加载上述数据的列表,我使用了 LoaderManager。

在详细信息页面上,我也使用了 LoaderManager,但我像这样创建 CursorLoader:

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

正如你所看到的,我只从桌子上得到一个项目。当行被更新时,onLoadFinished回调被更新,但是,当其他行被添加/修改到表中时。这不会很麻烦,但有时,它会导致整个列表变为空白并重新绘制,当它多次发生时,这可能会让用户感到沮丧。

你知道我怎样才能避免这种行为吗?

4

1 回答 1

3

正在重新加载,因为您将此游标加载器与DataProvider.POST_URI我假设您用于您的帖子表的那个关联。每当此表中的任何元素发生更改时,Uri都会通知所有具有该更改的游标。如果你想接收单个项目的通知,你应该实施一个新的Uri方案来匹配那个项目。例如,查看UriMatcher类的文档。你应该做一些类似于PEOPLEPEOPLE_ID情况的事情。

编辑

ContentProvider 你可以在这里找到一个很好的教程。特别的第 9.4 节应该有助于正确实施ContentProvider.

于 2013-03-15T19:06:32.100 回答