예제 #1
0
 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();
     }
 }
예제 #2
0
 /// <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);
 }
예제 #3
0
            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);
                }
            }
예제 #4
0
        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);
                }
            }
        }