package novoda.android.typewriter.cursor; import android.database.Cursor; import java.util.ListIterator; public class CursorListIterator<T> implements ListIterator<T> { private final Cursor cursor; private final CursorMarshaller<T> marshaller; private int index; public CursorListIterator(Cursor cursor, CursorMarshaller<T> marshaller, int index) { this.cursor = cursor; this.marshaller = marshaller; this.index = index; } @Override public boolean hasNext() { return index < cursor.getCount(); } @Override public boolean hasPrevious() { return index > 0; } @Override public T next() { cursor.moveToPosition(index++); return marshaller.marshall(cursor); } @Override public int nextIndex() { return index + 1; } @Override public T previous() { cursor.moveToPosition(--index); return marshaller.marshall(cursor); } @Override public int previousIndex() { return index - 1; } @Override public void remove() { throw new UnsupportedOperationException(); } @Override public void set(T t) { throw new UnsupportedOperationException(); } @Override public void add(T t) { throw new UnsupportedOperationException(); } }