调用LoaderManager onLoadFinished但不刷新RecyclerView

时间:2015-01-27 16:56:41

标签: android android-cursorloader android-loadermanager

我有一个ContentProvider来管理sqlite数据库。在ContentProvider的query()方法中,我注册了通知:

cursor.setNotificationUri(getContext().getContentResolver(), uri);

如果插入了一个条目,我会通过以下调用通过ContentProvider中的insert()方法通知所有观察者:

getContext().getContentResolver().notifyChange(uri, null);

RecyclerView位于片段中,片段实现了LoaderManager.LoaderCallbacks以允许对更改做出反应。

@Override
public Loader<Cursor> onCreateLoader(int loader, Bundle bundle) {
    switch (loader) {
        case URL_LOADER:
            return new CursorLoader(getActivity(), DataProvider.PERSONS_URI, 
                                    null, null, null, null);

        default:
            return null;
    }
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    this.mAdapter.swapCursor(cursor);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    this.mAdapter.swapCursor(null);
}

这些是我的LoaderCallbacks。如果我通过ContentResolver插入一个元素onLoadFinished被调用,但UI没有更新。当我重新启动应用程序时,条目可见。支持RecyclerView游标所需的适​​配器基于这个要点。 https://gist.github.com/Shywim/127f207e7248fe48400b

0 个答案:

没有答案