public void changeCursor(Cursor cursor) {
    if (cursor == mCursor) {
      return;
    }

    if (mCursor != null) {
      mCursor.unregisterContentObserver(mChangeObserver);
      mCursor.unregisterDataSetObserver(mDataSetObserver);
      mCursor.close();
    }
    mCursor = cursor;
    resetCache();
    findGroups();
    if (cursor != null) {
      cursor.registerContentObserver(mChangeObserver);
      cursor.registerDataSetObserver(mDataSetObserver);
      mRowIdColumnIndex = cursor.getColumnIndexOrThrow("_id");
      mDataValid = true;
      notifyDataSetChanged();
    } else {
      mRowIdColumnIndex = -1;
      mDataValid = false;
      // notify the observers about the lack of a data set
      notifyDataSetInvalidated();
    }
  }
 /**
  * Swap in a new Cursor, returning the old Cursor. Unlike {@link #changeCursor(Cursor)}, the
  * returned old Cursor is <em>not</em> closed.
  *
  * @param newCursor The new cursor to be used.
  * @return 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.
  */
 public Cursor swapCursor(Cursor newCursor) {
   if (newCursor == mCursor) {
     return null;
   }
   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
     // There is no notifyDataSetInvalidated() method in RecyclerView.Adapter
     notifyDataSetChanged();
   }
   return oldCursor;
 }
Exemple #3
0
 public Cursor swapCursor(Cursor newCursor) {
   if (newCursor == this.mCursor) {
     return null;
   }
   Cursor oldCursor = this.mCursor;
   if (oldCursor != null) {
     if (this.mChangeObserver != null) {
       oldCursor.unregisterContentObserver(this.mChangeObserver);
     }
     if (this.mDataSetObserver != null) {
       oldCursor.unregisterDataSetObserver(this.mDataSetObserver);
     }
   }
   this.mCursor = newCursor;
   if (newCursor != null) {
     if (this.mChangeObserver != null) {
       newCursor.registerContentObserver(this.mChangeObserver);
     }
     if (this.mDataSetObserver != null) {
       newCursor.registerDataSetObserver(this.mDataSetObserver);
     }
     this.mRowIDColumn = newCursor.getColumnIndexOrThrow("_id");
     this.mDataValid = true;
     notifyDataSetChanged();
     return oldCursor;
   }
   this.mRowIDColumn = -1;
   this.mDataValid = false;
   notifyDataSetInvalidated();
   return oldCursor;
 }
 /**
  * Swap in a new Cursor, returning the old Cursor. Unlike {@link #changeCursor(Cursor)}, the
  * returned old Cursor is <em>not</em> closed.
  *
  * @param newCursor The new cursor to be used.
  * @return 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.
  */
 public Cursor swapCursor(Cursor newCursor) {
   if (newCursor == mCursor) {
     return null;
   }
   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();
     notifyItemRangeRemoved(0, getItemCount());
   }
   return oldCursor;
 }
  /**
   * Swap in a new Cursor, returning the old Cursor. Unlike {@link #changeCursor(Cursor)}, the
   * returned old Cursor is <em>not</em> closed.
   */
  private Cursor swapCursor(Cursor newCursor) {
    if (newCursor == mCursor) {
      return null;
    }
    final Cursor oldCursor = mCursor;
    if (oldCursor != null && mDataSetObserver != null) {
      oldCursor.unregisterDataSetObserver(mDataSetObserver);
    }
    mCursor = newCursor;

    if (mCursor != null) {
      if (mDataSetObserver != null) {
        mCursor.registerDataSetObserver(mDataSetObserver);
      }
      mRowIdColumn = newCursor.getColumnIndexOrThrow("_id");
      mDataValid = true;
      notifyDataSetChanged();
    } else {
      mRowIdColumn = -1;
      mDataValid = false;
      notifyDataSetChanged();
      // There is no notifyDataSetInvalidated() method in RecyclerView.Adapter
    }
    return oldCursor;
  }
 @Override
 protected void onPause() {
   super.onPause();
   if (haveCursors()) {
     mDateSortedCursor.unregisterContentObserver(mContentObserver);
     mDateSortedCursor.unregisterDataSetObserver(mDataSetObserver);
   }
 }
 void changeMostVisitedCursor(Cursor cursor) {
   if (mMostVisited == cursor) {
     return;
   }
   if (mMostVisited != null) {
     mMostVisited.unregisterDataSetObserver(mDataSetObserver);
     mMostVisited.close();
   }
   mMostVisited = cursor;
   if (mMostVisited != null) {
     mMostVisited.registerDataSetObserver(mDataSetObserver);
   }
   notifyDataSetChanged();
 }
  public Cursor swapCursor(Cursor newCursor) {
    if (newCursor == cursor) {
      return null;
    }

    final Cursor oldCursor = cursor;
    if (oldCursor != null) {
      oldCursor.unregisterDataSetObserver(observer);
    }

    cursor = newCursor;
    if (cursor != null) {
      cursor.registerDataSetObserver(observer);
    }

    valid = cursor != null;
    notifyDataSetChanged();
    return oldCursor;
  }
 public Cursor swapCursor(Cursor newCursor) {
   if (newCursor == mCursor) {
     return null;
   }
   final Cursor oldCursor = mCursor;
   if (oldCursor != null && mDataSetObserver != null) {
     oldCursor.unregisterDataSetObserver(mDataSetObserver);
   }
   mCursor = newCursor;
   if (mCursor != null) {
     if (mDataSetObserver != null) {
       mCursor.registerDataSetObserver(mDataSetObserver);
     }
     rowIdColumn = newCursor.getColumnIndexOrThrow("_id");
     dataIsValid = true;
     notifyDataSetChanged();
   } else {
     rowIdColumn = -1;
     dataIsValid = false;
     notifyDataSetChanged();
   }
   return oldCursor;
 }
 public void unregisterDataSetObserver(DataSetObserver observer) {
   mDatabaseCursor.unregisterDataSetObserver(observer);
 }