Exemplo n.º 1
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);
				}
			}
		}
Exemplo n.º 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;
		}
Exemplo n.º 3
0
		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]);
				}
			}
		}