我有一个Android应用程序,它有一个内容提供商,我经常更新。为了加载所述数据的列表,我正在使用加载管理器。
在详细信息页面上,我也使用 LoaderManager,但我像这样创建 CursorLoader:
return new CursorLoader(getActivity(), DataProvider.POST_URI, projection, "_id = ?", new String[]{String.valueOf(post_id)}, null);
如您所见,我只从表中获取了一个项目。更新行时,onLoadFinished
回调也会更新,但当其他行被添加/修改到表中时,也会更新。这不会很麻烦,但有时,它会导致整个列表变白并重新绘制,当它多次发生时,这可能会让用户感到沮丧。
您知道我怎样才能避免这种行为吗?
重新加载是因为您将此游标加载器与我假设用于帖子表的DataProvider.POST_URI
相关联。只要此表中的任何元素发生更改,就会通知具有该Uri
的所有游标。如果要接收单个项目的通知,则应实施新的Uri
方案以仅匹配该项目。有关示例,请查看 UriMatcher 类的文档。您应该执行类似于PEOPLE
和PEOPLE_ID
情况的操作。
编辑
你可以在这里找到一个很好的教程ContentProvider
。特别是第9.4节应有助于正确实施ContentProvider
。