【发布时间】:2016-11-29 15:14:34
【问题描述】:
我正在使用内容观察器。在 onQuery 内部,我使用了 setNotificationUri 来注册 uri。 在 bulkInsert/insert 方法中,我添加了 notifyChange 方法调用。 在 bulkInsert 或 insert 之后,将调用 CursorLoader.onLoadFinished 方法。在 onLoaderFinished 方法内部:adapter.swapCursor 也被调用。 但没有调用 CursorAdapter newView/getView。 我在 CursorAdapter 中也覆盖了 getCount 方法。我能够获得光标计数。 请帮忙。 提前致谢。
MainActivity onCreate contains:
mGridView = (GridView) findViewById(R.id.grid_view);
mMovieCursorAdapter = new MoviesCursorAdapter(this, null, 0);
mGridView.setAdapter(mMovieCursorAdapter);
getSupportLoaderManager().initLoader(MOVIE_LOADER, null, this);
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Uri uri = MovieContract.MovieEntry.CONTENT_URI;
return new CursorLoader(this, uri, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
mMovieCursorAdapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mMovieCursorAdapter.swapCursor(null);
}
In ContentProvider query() method:
retCursor.setNotificationUri(getContext().getContentResolver(), uri);
**In bulkInsert() method:**
getContext().getContentResolver().notifyChange(uri, null);
【问题讨论】:
-
能否分享更多代码和细节
标签: android android-cursorloader contentobserver