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