我有MyListFragment
实施,使用MyCursorAdapter
。顾名思义,它们都扩展了各自的Android类。
我通读了this Loader/LoaderManager tutorial。所以,现在我的查询发生在
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(blah1, blah2, blah3, blah4, blah5, blah6);
}
和 LoaderManager 以及 Loader 负责重新查询和更新的时间,为查询运行单独的线程,同步而不必担心它。到现在为止还挺好。
我有两个问题:
1)我已经实施了MyContentProvider
。这到底是什么?
- &gt; 以上new CursorLoader(......)
似乎通过MyContentProvider
进行查询,因为它使用URI作为第一个参数。
2)我还需要删除/更新/插入列表中的项目。我应该在MyContentProvider
MyListFragment
内的所需位置调用我的相应方法吗?如果是,那么我是否也可以手动加载项目,而无需加载程序处理它?如果没有,那么正确的方式是做什么的?我没有在网上找到任何信息。任何指针都赞赏。
答案 0 :(得分:1)
是的,那是正确的,它将使用MyContentProvider
构造函数中使用的参数调用CursorLoader
中的查询方法。
如果我理解正确答案是肯定的,只要他们拨打MyContentProvider
就可以调用ContentResolver.notifyChange()
方法,因为它会导致CursorLoader
获得新光标(这是使用CursorLoader
的全部要点)。使用CursorLoader
时,如果可以,则应避免手动更改数据,以便允许显示的内容始终反映来自MyContentProvider
的当前数据集。