假设您在CONTENT_URI
内有一个ContentProvider
,您想在其中做一些复杂的事情,并返回游标(MergeCursor
)的组合,而不是简单的单个Cursor
。
碰巧的是,如果您在URI
上设置了通知MergeCursor
而不是从该MergeCursor
内的光标,则该通知将无法工作。
初始代码:
Cursor[] cursors = { extraCursorBefore, usersCursor, extraCursorAfter };
Cursor extendedCursor = new MergeCursor(cursors);
// Make sure that potential listeners are getting notified
extendedCursor.setNotificationUri(getContext().getContentResolver(), CONTENT_URI_PEOPLE);
return extendedCursor;
PS:如果有人以其他方式有其他想法,或者弄清楚为什么这对原始的
MergeCursor
无效,那么请分享您的知识。 最佳答案
因此,您需要在结果URI
中的Cursor
上设置通知MergeCursor
。
实际有效的代码:
Cursor[] cursors = { extraCursorBefore, usersCursor, extraCursorAfter };
Cursor extendedCursor = new MergeCursor(cursors);
// Make sure that potential listeners are getting notified
usersCursor.setNotificationUri(getContext().getContentResolver(), CONTENT_URI_PEOPLE);
return extendedCursor;