假设您在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;

10-08 10:52