Example #1
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);
 }