Android Open Source - RZAndroidBaseUtils Cursor Iterator






From Project

Back to project page RZAndroidBaseUtils.

License

The source code is released under:

MIT License

If you think the Android project RZAndroidBaseUtils listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.raizlabs.database;
/*from w  w w. jav a 2 s .c  o  m*/
import java.io.Closeable;
import java.io.IOException;
import java.util.Iterator;

import android.database.Cursor;

/**
 * {@link Iterator} implementation which iterates over the items in a {@link Cursor}.
 * 
 * @author Dylan James
 *
 * @param <T> The type of object stored in the {@link Cursor}.
 */
public abstract class CursorIterator<T> implements Iterator<T>, Closeable {

  private Cursor mCursor;

  /**
   * Creates a {@link CursorIterator} that iterates over the rows of the given
   * {@link Cursor}.
   * @param cursor The {@link Cursor} to iterate over.
   */
  public CursorIterator(Cursor cursor) {
    this.mCursor = cursor;
  }
  
  public void close() throws IOException {
    if (mCursor != null) { 
      mCursor.close();
      mCursor = null;
    }
  }

  @Override
  public boolean hasNext() {
    if (mCursor == null) {
      throw new IllegalStateException("Cannot use a CursorIteator after close() has been called or with a null cursor!");
    }
    return mCursor.getPosition() < mCursor.getCount() - 1;
  }

  @Override
  public T next() {
    if (mCursor == null) {
      throw new IllegalStateException("Cannot use an CursorIterator after close() has been called or with a null cursor!");
    }
    if (mCursor.moveToNext()) {
      return getCurrentItem(mCursor);
    } else {
      return null;
    }
  }

  /**
   * Gets the item at the current row in the cursor. Implementation should only
   * read the current columns, and should be sure not to move the cursor to the
   * next row, as this will cause items to be skipped.
   * @param cursor The {@link Cursor} to read values from.
   * @return The object at the current row in the cursor.
   */
  protected abstract T getCurrentItem(Cursor cursor);

  @Override
  public void remove() {
    throw new UnsupportedOperationException("CursorIterators cannot remove items by default.");
  }

}




Java Source Code List

com.raizlabs.baseutils.CompatibilityUtils.java
com.raizlabs.baseutils.IOUtils.java
com.raizlabs.baseutils.Logger.java
com.raizlabs.baseutils.Math.java
com.raizlabs.baseutils.StringUtils.java
com.raizlabs.baseutils.ThreadingUtils.java
com.raizlabs.baseutils.Wrapper.java
com.raizlabs.baseutils.examples.MainActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableExampleActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableListExampleActivity.java
com.raizlabs.baseutils.examples.simplegenericadapter.SimpleGenericAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewgroupadapter.ViewGroupAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewholderstrategy.SimpleViewHolderStrategyExampleActivity.java
com.raizlabs.collections.ListUtils.java
com.raizlabs.collections.MappableSet.java
com.raizlabs.collections.TransactionalHashSet.java
com.raizlabs.concurrent.BasePrioritizedRunnable.java
com.raizlabs.concurrent.ConcurrencyUtils.java
com.raizlabs.concurrent.PrioritizedRunnable.java
com.raizlabs.concurrent.Prioritized.java
com.raizlabs.content.sharing.SharingUtils.java
com.raizlabs.database.CursorIterable.java
com.raizlabs.database.CursorIterator.java
com.raizlabs.events.EventListener.java
com.raizlabs.events.Event.java
com.raizlabs.events.ProgressListener.java
com.raizlabs.events.SimpleEventListener.java
com.raizlabs.functions.Delegate.java
com.raizlabs.functions.Predicate.java
com.raizlabs.functions.Provider.java
com.raizlabs.graphics.ImageFactory.java
com.raizlabs.graphics.drawable.async.AsyncDrawableTask.java
com.raizlabs.graphics.drawable.async.AsyncDrawableUtils.java
com.raizlabs.graphics.drawable.async.AsyncDrawableWrapper.java
com.raizlabs.graphics.drawable.async.AsyncDrawable.java
com.raizlabs.graphics.drawable.async.BaseAsyncDrawableTask.java
com.raizlabs.imagecaching.ImageCache.java
com.raizlabs.imagecaching.PrefixedImageCacheAdapter.java
com.raizlabs.imagecaching.StubImageCache.java
com.raizlabs.json.JSONArrayParserDelegate.java
com.raizlabs.json.JSONHelper.java
com.raizlabs.synchronization.OneShotLock.java
com.raizlabs.tasks.RZAsyncTaskEvent.java
com.raizlabs.tasks.RZAsyncTaskListener.java
com.raizlabs.tasks.RZAsyncTask.java
com.raizlabs.util.observable.ObservableData.java
com.raizlabs.util.observable.ObservableListAdapter.java
com.raizlabs.util.observable.ObservableList.java
com.raizlabs.view.ViewCompatibility.java
com.raizlabs.view.animation.AnimationListenerWrapper.java
com.raizlabs.view.animation.RelativeLayoutParamsAnimation.java
com.raizlabs.view.animation.ResizeAnimation.java
com.raizlabs.widget.EvenLinearLayout.java
com.raizlabs.widget.ImageMixView.java
com.raizlabs.widget.SlideRevealLayout.java
com.raizlabs.widget.ViewUtils.java
com.raizlabs.widget.adapters.ListBasedAdapter.java
com.raizlabs.widget.adapters.SimpleGenericAdapter.java
com.raizlabs.widget.adapters.ViewGroupAdapter.java
com.raizlabs.widget.adapters.ViewHolderStrategyAdapter.java
com.raizlabs.widget.utils.SimpleViewHolderStrategy.java
com.raizlabs.widget.utils.ViewHolderStrategyConverter.java
com.raizlabs.widget.utils.ViewHolderStrategyUtils.java
com.raizlabs.widget.utils.ViewHolderStrategy.java