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); } } }
/// <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; }
private void initFromColumns(android.database.Cursor cursor, string[] fromColumnNames , int[] fromColumns) { { for (int i = fromColumnNames.Length - 1; i >= 0; i--) { fromColumns[i] = cursor.getColumnIndexOrThrow(fromColumnNames[i]); } } }