@Override public int getColumnCount() { if (mColumnCount == -1) { mColumnCount = super.getColumnCount(); } return mColumnCount + 1; }
protected long getPerCursorId() { if (mIdColumnIndex == -1) { mIdColumnIndex = super.getColumnIndexOrThrow("_id"); } return super.getLong(mIdColumnIndex); } }
@Override public boolean moveToLast() { return moveToPosition(getCount() - 1); }
@Override public boolean moveToPosition(int position) { final int count = getCount(); if (position >= count) { mPosition = count; if (!moveToNext()) { return false; if (!moveToPrevious()) { return false;
@Override public boolean isAfterLast() { int count = getCount(); return count == 0 || mPosition == count; }
@Override public int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException { if ("_id".equals(columnName)) { return getUniqueIdColumnIndex(); } return super.getColumnIndexOrThrow(columnName); }
@Override public boolean move(int offset) { return moveToPosition(mPosition + offset); }
/** * Constructor * * @param cursors * The list of cursors this {@code MultiCursor} should combine. * @param comparator * A comparator that is used to decide in what order the individual cursors are merged. */ public MergeCursor(Cursor[] cursors, Comparator<Cursor> comparator) { mCursors = cursors.clone(); mComparator = comparator; resetCursors(); }
@Override public long getLong(int columnIndex) { if (columnIndex == getUniqueIdColumnIndex()) { long id = getPerCursorId(); if (id > MAX_ID) { throw new RuntimeException("Sorry, " + this.getClass().getName() + " can only handle '_id' values up to " + SHIFT + " bits."); } return (((long) mActiveCursorIndex) << SHIFT) + id; } return super.getLong(columnIndex); }
@Override public boolean isLast() { int count = getCount(); return count != 0 && mPosition == count - 1; }
@Override public int getColumnIndex(String columnName) { if ("_id".equals(columnName)) { return getUniqueIdColumnIndex(); } return super.getColumnIndexOrThrow(columnName); }
@Override public boolean moveToFirst() { return moveToPosition(0); }
@Override public boolean isFirst() { return getCount() != 0 && mPosition == 0; }
protected int getUniqueIdColumnIndex() { if (mColumnCount == -1) { mColumnCount = super.getColumnCount(); } return mColumnCount; }
@Override public boolean isBeforeFirst() { return getCount() == 0 || mPosition == -1; }
@Override public boolean moveToNext() { int count = getCount(); if (mPosition == count) { return false;