即使我调用notifyChange(uri,null),ListView也不会更新;虽然内容提供商

我在尝试让新的数据添加到内容提供商时刷新ListView以进行刷新时遇到了问题。即使我调用notifyChange(uri,null),ListView也不会更新;虽然内容提供商

阅读在这个问题上相近岗位,我就确定我的查询方法使用getContext().getContentResolver().notifyChange(uri, null);我的插入方法和 c.setNotificationUri(getContext().getContentResolver(), uri);(谈论的内容提供商类)。

我实现LoaderManager.LoaderCallbacks<Cursor>在我的活动:

@Override 

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

return new CursorLoader(ChatWindowActivity.this,

DatabaseContentProvider.getConversationUri(conversationId),

PROJECTION, null, null, null);

}

@Override

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

switch (loader.getId()) {

case LOADER_ID:

mAdapter.swapCursor(cursor);

break;

}

}

@Override

public void onLoaderReset(Loader<Cursor> loader) {

mAdapter.swapCursor(null);

}

}

而我使用的是getItemViewType自定义光标适配器,getViewTypeCountnewViewbindView覆盖(类扩展CursorAdapter

在我的服务,我调用service.getContentResolver().insert(...,values),但活动ListView不会更新,除非我关闭并重新打开应用程序。

这可能是什么原因造成的?

回答:

我已经设法解决这个问题,但在这里发帖以防万一以后帮助别人。

问题出在getContext().getContentResolver().notifyChange(uri, null);。内容提供商将仅通知在特定的 URI上发生的更改。

所以我必须确保CursorLoader和插入调用完全相同的URI工作。即使像'/contacts/1'到'/contacts'这样的小差别也不会通知游标被改变。

以上是 即使我调用notifyChange(uri,null),ListView也不会更新;虽然内容提供商 的全部内容, 来源链接: utcz.com/qa/264495.html

回到顶部