internal virtual void changeCursor(android.database.Cursor cursor, bool releaseCursors ) { if (cursor == this.mCursor) { return; } this.deactivate(); this.mCursor = cursor; if (cursor != null) { cursor.registerContentObserver(this.mContentObserver); cursor.registerDataSetObserver(this.mDataSetObserver); this.mRowIDColumn = cursor.getColumnIndex("_id"); this.mDataValid = true; // notify the observers about the new cursor this._enclosing.notifyDataSetChanged(releaseCursors); } else { this.mRowIDColumn = -1; this.mDataValid = false; // notify the observers about the lack of a data set this._enclosing.notifyDataSetInvalidated(); } }
/// <summary>Swap in a new Cursor, returning the old Cursor.</summary> /// <remarks> /// Swap in a new Cursor, returning the old Cursor. Unlike /// <see cref="changeCursor(android.database.Cursor)">changeCursor(android.database.Cursor) /// </see> /// , the returned old Cursor is <em>not</em> /// closed. /// </remarks> /// <param name="newCursor">The new cursor to be used.</param> /// <returns> /// 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. /// </returns> public virtual android.database.Cursor swapCursor(android.database.Cursor newCursor ) { if (newCursor == mCursor) { return(null); } android.database.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 notifyDataSetInvalidated(); } return(oldCursor); }
internal MyCursorHelper(CursorTreeAdapter _enclosing, android.database.Cursor cursor ) { this._enclosing = _enclosing; bool cursorPresent = cursor != null; this.mCursor = cursor; this.mDataValid = cursorPresent; this.mRowIDColumn = cursorPresent ? cursor.getColumnIndex("_id") : -1; this.mContentObserver = new android.widget.CursorTreeAdapter.MyCursorHelper.MyContentObserver (this); this.mDataSetObserver = new android.widget.CursorTreeAdapter.MyCursorHelper.MyDataSetObserver (this); if (cursorPresent) { cursor.registerContentObserver(this.mContentObserver); cursor.registerDataSetObserver(this.mDataSetObserver); } }
internal virtual void init(android.content.Context context, android.database.Cursor c, int flags) { if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) { flags |= FLAG_REGISTER_CONTENT_OBSERVER; mAutoRequery = true; } else { mAutoRequery = false; } bool 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 android.widget.CursorAdapter.ChangeObserver(this); mDataSetObserver = new android.widget.CursorAdapter.MyDataSetObserver(this); } else { mChangeObserver = null; mDataSetObserver = null; } if (cursorPresent) { if (mChangeObserver != null) { c.registerContentObserver(mChangeObserver); } if (mDataSetObserver != null) { c.registerDataSetObserver(mDataSetObserver); } } }