使用LoaderManager和CursorAdapter进行CRUD

时间:2014-03-03 01:02:40

标签: android android-contentprovider android-loadermanager

我有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内的所需位置调用我的相应方法吗?如果是,那么我是否也可以手动加载项目,而无需加载程序处理它?如果没有,那么正确的方式是做什么的?我没有在网上找到任何信息。任何指针都赞赏。

1 个答案:

答案 0 :(得分:1)

  1. 是的,那是正确的,它将使用MyContentProvider构造函数中使用的参数调用CursorLoader中的查询方法。

  2. 如果我理解正确答案是肯定的,只要他们拨打MyContentProvider就可以调用ContentResolver.notifyChange()方法,因为它会导致CursorLoader获得新光标(这是使用CursorLoader的全部要点)。使用CursorLoader时,如果可以,则应避免手动更改数据,以便允许显示的内容始终反映来自MyContentProvider的当前数据集。