package com.techsmith.utilities; import android.database.AbstractCursor; import android.database.Cursor; public class IndexMaskingCursor extends AbstractCursor { private final Cursor mCursor; private final int[] mMaskedPositions; public MaskingCursor( Cursor cursor, int[] maskedPositions ) { mCursor = cursor; mMaskedPositions = maskedPositions; } @Override public int getCount() { return mCursor.getCount() - mMaskedPositions.length; } @Override public String[] getColumnNames() { return mCursor.getColumnNames(); } @Override public String getString( int i ) { return mCursor.getString( i ); } @Override public short getShort( int i ) { return mCursor.getShort( i ); } @Override public int getInt( int i ) { return mCursor.getInt( i ); } @Override public long getLong( int i ) { return mCursor.getLong( i ); } @Override public float getFloat( int i ) { return mCursor.getFloat( i ); } @Override public double getDouble( int i ) { return mCursor.getDouble( i ); } @Override public boolean isNull( int i ) { return mCursor.isNull( i ); } @Override public boolean onMove( int oldPosition, int newPosition ) { int offset = 0; for ( int position : mMaskedPositions ) { if ( newPosition >= position ) { offset++; } } return mCursor.moveToPosition( newPosition + offset ); } @Override public void close() { mCursor.close(); } }