/// <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); }