Example usage for android.database Cursor registerContentObserver

List of usage examples for android.database Cursor registerContentObserver

Introduction

In this page you can find the example usage for android.database Cursor registerContentObserver.

Prototype

void registerContentObserver(ContentObserver observer);

Source Link

Document

Register an observer that is called when changes happen to the content backing this cursor.

Usage

From source file:com.cattle.util.CursorPagerAdapter.java

/**
 * Swap in a new Cursor, returning the old Cursor. Unlike {@link #changeCursor(android.database.Cursor)}, the
 * returned old Cursor is <em>not</em> closed.
 *
 * @param newCursor The new cursor to be used.
 * @return Returns the previously set Cursor, or null if there was not one. If the given new Cursor
 *         is the same instance is the previously set Cursor, null is also returned.
 *//* w  w  w.j  a v a  2 s.  co  m*/
public Cursor swapCursor(Cursor newCursor) {
    if (newCursor == mCursor) {
        return null;
    }
    Cursor oldCursor = mCursor;
    if (oldCursor != null) {
        if (mChangeObserver != null) {
            oldCursor.unregisterContentObserver(mChangeObserver);
        }
        if (mDataSetObserver != null) {
            oldCursor.unregisterDataSetObserver(mDataSetObserver);
        }
    }
    mCursor = newCursor;
    if (newCursor != null) {
        if (mChangeObserver != null) {
            newCursor.registerContentObserver(mChangeObserver);
        }
        if (mDataSetObserver != null) {
            newCursor.registerDataSetObserver(mDataSetObserver);
        }
        mRowIDColumn = newCursor.getColumnIndexOrThrow("_id");
        mDataValid = true;
        // notify the observers about the new cursor
        notifyDataSetChanged();
    } else {
        mRowIDColumn = -1;
        mDataValid = false;
        // notify the observers about the lack of a data set
        notifyDataSetChanged();
    }
    return oldCursor;
}

From source file:com.niveales.library.utils.MyCursorAdapter.java

/**
 * Swap in a new Cursor, returning the old Cursor.  Unlike
 * {@link #changeCursor(Cursor)}, the returned old Cursor is <em>not</em>
 * closed./*from  w w w . j  a  va2 s  . com*/
 *
 * @param newCursor The new cursor to be used.
 * @return Returns the previously set Cursor, or null if there wasa not one.
 * If the given new Cursor is the same instance is the previously set
 * Cursor, null is also returned.
 */
public Cursor swapCursor(Cursor newCursor) {
    if (newCursor == mCursor) {
        return null;
    }
    Cursor oldCursor = mCursor;
    if (oldCursor != null) {
        if (mChangeObserver != null)
            oldCursor.unregisterContentObserver(mChangeObserver);
        if (mDataSetObserver != null)
            oldCursor.unregisterDataSetObserver(mDataSetObserver);
    }
    mCursor = newCursor;
    if (newCursor != null) {
        if (mChangeObserver != null)
            newCursor.registerContentObserver(mChangeObserver);
        if (mDataSetObserver != null)
            newCursor.registerDataSetObserver(mDataSetObserver);
        mRowIDColumn = newCursor.getColumnIndexOrThrow(id_field);
        mDataValid = true;
        // notify the observers about the new cursor
        notifyDataSetChanged();
    } else {
        mRowIDColumn = -1;
        mDataValid = false;
        // notify the observers about the lack of a data set
        notifyDataSetInvalidated();
    }
    return oldCursor;
}

From source file:com.cattle.util.CursorPagerAdapter.java

void init(Context context, Cursor c, int flags) {
    if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) {
        flags |= FLAG_REGISTER_CONTENT_OBSERVER;
        mAutoRequery = true;/*  ww  w. j a  va  2  s  .c o  m*/
    } else {
        mAutoRequery = false;
    }
    boolean cursorPresent = c != null;
    mCursor = c;
    mDataValid = cursorPresent;
    mContext = context;
    mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow("_id") : -1;
    if ((flags & FLAG_REGISTER_CONTENT_OBSERVER) == FLAG_REGISTER_CONTENT_OBSERVER) {
        mChangeObserver = new ChangeObserver();
        mDataSetObserver = new MyDataSetObserver();
    } else {
        mChangeObserver = null;
        mDataSetObserver = null;
    }

    if (cursorPresent) {
        if (mChangeObserver != null) {
            c.registerContentObserver(mChangeObserver);
        }
        if (mDataSetObserver != null) {
            c.registerDataSetObserver(mDataSetObserver);
        }
    }
}

From source file:uk.co.senab.photup.util.CursorPagerAdapter.java

void init(Context context, Cursor c, int flags) {
    if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) {
        flags |= FLAG_REGISTER_CONTENT_OBSERVER;
        mAutoRequery = true;//  w w w . ja  va2s.c o m
    } else {
        mAutoRequery = false;
    }
    boolean cursorPresent = c != null;
    mCursor = c;
    mDataValid = cursorPresent;
    mContext = context;
    mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow("_id") : -1;
    if ((flags & FLAG_REGISTER_CONTENT_OBSERVER) == FLAG_REGISTER_CONTENT_OBSERVER) {
        mChangeObserver = new ChangeObserver();
        mDataSetObserver = new MyDataSetObserver();
    } else {
        mChangeObserver = null;
        mDataSetObserver = null;
    }

    if (cursorPresent) {
        if (mChangeObserver != null)
            c.registerContentObserver(mChangeObserver);
        if (mDataSetObserver != null)
            c.registerDataSetObserver(mDataSetObserver);
    }
}

From source file:com.niveales.library.utils.MyCursorAdapter.java

void init(Context context, Cursor c, int flags, String id_field) {
    this.id_field = id_field;
    if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) {
        flags |= FLAG_REGISTER_CONTENT_OBSERVER;
        mAutoRequery = true;//from ww w.  j  a v a2s.  c o m
    } else {
        mAutoRequery = false;
    }
    boolean cursorPresent = c != null;
    mCursor = c;
    mDataValid = cursorPresent;
    mContext = context;
    mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow(id_field) : -1;
    if ((flags & FLAG_REGISTER_CONTENT_OBSERVER) == FLAG_REGISTER_CONTENT_OBSERVER) {
        mChangeObserver = new ChangeObserver();
        mDataSetObserver = new MyDataSetObserver();
    } else {
        mChangeObserver = null;
        mDataSetObserver = null;
    }

    if (cursorPresent) {
        if (mChangeObserver != null)
            c.registerContentObserver(mChangeObserver);
        if (mDataSetObserver != null)
            c.registerDataSetObserver(mDataSetObserver);
    }
}

From source file:cn.edu.wyu.documentviewer.DirectoryResult.java

@Override
public final DirectoryResult loadInBackground() {
    synchronized (this) {
        if (isLoadInBackgroundCanceled()) {
            throw new OperationCanceledException();
        }//from w  w w.j  a va 2 s.co  m
        mSignal = new CancellationSignal();
    }

    final ContentResolver resolver = getContext().getContentResolver();
    final String authority = mUri.getAuthority();

    final DirectoryResult result = new DirectoryResult();

    int userMode = State.MODE_UNKNOWN;

    // Use default document when searching
    if (mType == DirectoryFragment.TYPE_SEARCH) {
        final Uri docUri = DocumentsContract.buildDocumentUri(mRoot.authority, mRoot.documentId);
        try {
            mDoc = DocumentInfo.fromUri(resolver, docUri);
        } catch (FileNotFoundException e) {
            Log.w(TAG, "Failed to query", e);
            result.exception = e;
            return result;
        }
    }

    // Pick up any custom modes requested by user
    Cursor cursor = null;
    try {
        final Uri stateUri = RecentsProvider.buildState(mRoot.authority, mRoot.rootId, mDoc.documentId);
        cursor = resolver.query(stateUri, null, null, null, null);
        if (cursor.moveToFirst()) {
            userMode = getCursorInt(cursor, StateColumns.MODE);
        }
    } finally {
        IOUtils.closeQuietly(cursor);
    }

    if (userMode != State.MODE_UNKNOWN) {
        result.mode = userMode;
    } else {
        if ((mDoc.flags & Document.FLAG_DIR_PREFERS_GRID) != 0) {
            result.mode = State.MODE_GRID;
        } else {
            result.mode = State.MODE_LIST;
        }
    }

    if (mUserSortOrder != State.SORT_ORDER_UNKNOWN) {
        result.sortOrder = mUserSortOrder;
    } else {
        if ((mDoc.flags & Document.FLAG_DIR_PREFERS_LAST_MODIFIED) != 0) {
            result.sortOrder = State.SORT_ORDER_LAST_MODIFIED;
        } else {
            result.sortOrder = State.SORT_ORDER_DISPLAY_NAME;
        }
    }

    // Search always uses ranking from provider
    if (mType == DirectoryFragment.TYPE_SEARCH) {
        result.sortOrder = State.SORT_ORDER_UNKNOWN;
    }

    Log.d(TAG, "userMode=" + userMode + ", userSortOrder=" + mUserSortOrder + " --> mode=" + result.mode
            + ", sortOrder=" + result.sortOrder);

    ContentProviderClient client = null;
    try {
        client = DocumentsApplication.acquireUnstableProviderOrThrow(resolver, authority);

        cursor = client.query(mUri, null, null, null, getQuerySortOrder(result.sortOrder), mSignal);
        cursor.registerContentObserver(mObserver);

        cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1);

        if (mType == DirectoryFragment.TYPE_SEARCH) {
            // Filter directories out of search results, for now
            cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES);
        } else {
            // Normal directories should have sorting applied
            cursor = new SortingCursorWrapper(cursor, result.sortOrder);
        }

        result.client = client;
        result.cursor = cursor;
    } catch (Exception e) {
        Log.w(TAG, "Failed to query", e);
        result.exception = e;
        ContentProviderClient.releaseQuietly(client);
    } finally {
        synchronized (this) {
            mSignal = null;
        }
    }

    return result;
}