Android APIs
public class

CursorWindow

extends SQLiteClosable
implements Parcelable
java.lang.Object
   ↳ android.database.sqlite.SQLiteClosable
     ↳ android.database.CursorWindow

Class Overview

A buffer containing multiple cursor rows.

A CursorWindow is read-write when initially created and used locally. When sent to a remote process (by writing it to a Parcel), the remote process receives a read-only view of the cursor window. Typically the cursor window will be allocated by the producer, filled with data, and then sent to the consumer for reading.

Summary

[Expand]
Inherited Constants
From interface android.os.Parcelable
Fields
public static final Creator<CursorWindow> CREATOR
Public Constructors
CursorWindow(String name)
Creates a new empty cursor window and gives it a name.
CursorWindow(boolean localWindow)
This constructor was deprecated in API level 15. There is no longer a distinction between local and remote cursor windows. Use the CursorWindow(String) constructor instead.
Public Methods
boolean allocRow()
Allocates a new row at the end of this cursor window.
void clear()
Clears out the existing contents of the window, making it safe to reuse for new data.
void copyStringToBuffer(int row, int column, CharArrayBuffer buffer)
Copies the text of the field at the specified row and column index into a CharArrayBuffer.
int describeContents()
Describe the kinds of special objects contained in this Parcelable's marshalled representation.
void freeLastRow()
Frees the last row in this cursor window.
byte[] getBlob(int row, int column)
Gets the value of the field at the specified row and column index as a byte array.
double getDouble(int row, int column)
Gets the value of the field at the specified row and column index as a double.
float getFloat(int row, int column)
Gets the value of the field at the specified row and column index as a float.
int getInt(int row, int column)
Gets the value of the field at the specified row and column index as an int.
long getLong(int row, int column)
Gets the value of the field at the specified row and column index as a long.
int getNumRows()
Gets the number of rows in this window.
short getShort(int row, int column)
Gets the value of the field at the specified row and column index as a short.
int getStartPosition()
Gets the start position of this cursor window.
String getString(int row, int column)
Gets the value of the field at the specified row and column index as a string.
int getType(int row, int column)
Returns the type of the field at the specified row and column index.
boolean isBlob(int row, int column)
This method was deprecated in API level 11. Use getType(int, int) instead.
boolean isFloat(int row, int column)
This method was deprecated in API level 11. Use getType(int, int) instead.
boolean isLong(int row, int column)
This method was deprecated in API level 11. Use getType(int, int) instead.
boolean isNull(int row, int column)
This method was deprecated in API level 11. Use getType(int, int) instead.
boolean isString(int row, int column)
This method was deprecated in API level 11. Use getType(int, int) instead.
static CursorWindow newFromParcel(Parcel p)
boolean putBlob(byte[] value, int row, int column)
Copies a byte array into the field at the specified row and column index.
boolean putDouble(double value, int row, int column)
Puts a double-precision floating point value into the field at the specified row and column index.
boolean putLong(long value, int row, int column)
Puts a long integer into the field at the specified row and column index.
boolean putNull(int row, int column)
Puts a null value into the field at the specified row and column index.
boolean putString(String value, int row, int column)
Copies a string into the field at the specified row and column index.
boolean setNumColumns(int columnNum)
Sets the number of columns in this window.
void setStartPosition(int pos)
Sets the start position of this cursor window.
String toString()
Returns a string containing a concise, human-readable description of this object.
void writeToParcel(Parcel dest, int flags)
Flatten this object in to a Parcel.
Protected Methods
void finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
void onAllReferencesReleased()
Called when the last reference to the object was released by a call to releaseReference() or close().
[Expand]
Inherited Methods
From class android.database.sqlite.SQLiteClosable
From class java.lang.Object
From interface java.io.Closeable
From interface android.os.Parcelable
From interface java.lang.AutoCloseable

Fields

public static final Creator<CursorWindow> CREATOR

Added in API level 1

Public Constructors

public CursorWindow (String name)

Added in API level 15

Creates a new empty cursor window and gives it a name.

The cursor initially has no rows or columns. Call setNumColumns(int) to set the number of columns before adding any rows to the cursor.

Parameters
name String: The name of the cursor window, or null if none.

public CursorWindow (boolean localWindow)

Added in API level 1

This constructor was deprecated in API level 15.
There is no longer a distinction between local and remote cursor windows. Use the CursorWindow(String) constructor instead.

Creates a new empty cursor window.

The cursor initially has no rows or columns. Call setNumColumns(int) to set the number of columns before adding any rows to the cursor.

Parameters
localWindow boolean: True if this window will be used in this process only, false if it might be sent to another processes. This argument is ignored.

Public Methods

public boolean allocRow ()

Added in API level 1

Allocates a new row at the end of this cursor window.

Returns
boolean True if successful, false if the cursor window is out of memory.

public void clear ()

Added in API level 1

Clears out the existing contents of the window, making it safe to reuse for new data.

The start position (getStartPosition()), number of rows (getNumRows()), and number of columns in the cursor are all reset to zero.

public void copyStringToBuffer (int row, int column, CharArrayBuffer buffer)

Added in API level 1

Copies the text of the field at the specified row and column index into a CharArrayBuffer.

The buffer is populated as follows:

  • If the buffer is too small for the value to be copied, then it is automatically resized.
  • If the field is of type FIELD_TYPE_NULL, then the buffer is set to an empty string.
  • If the field is of type FIELD_TYPE_STRING, then the buffer is set to the contents of the string.
  • If the field is of type FIELD_TYPE_INTEGER, then the buffer is set to a string representation of the integer in decimal, obtained by formatting the value with the printf family of functions using format specifier %lld.
  • If the field is of type FIELD_TYPE_FLOAT, then the buffer is set to a string representation of the floating-point value in decimal, obtained by formatting the value with the printf family of functions using format specifier %g.
  • If the field is of type FIELD_TYPE_BLOB, then a SQLiteException is thrown.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
buffer CharArrayBuffer: The CharArrayBuffer to hold the string. It is automatically resized if the requested string is larger than the buffer's current capacity.

public int describeContents ()

Added in API level 1

Describe the kinds of special objects contained in this Parcelable's marshalled representation.

Returns
int a bitmask indicating the set of special object types marshalled by the Parcelable.

public void freeLastRow ()

Added in API level 1

Frees the last row in this cursor window.

public byte[] getBlob (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a byte array.

The result is determined as follows:

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
byte[] The value of the field as a byte array.

public double getDouble (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a double.

The result is determined as follows:

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
double The value of the field as a double.

public float getFloat (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a float.

The result is determined by invoking getDouble(int, int) and converting the result to float.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
float The value of the field as an float.

public int getInt (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as an int.

The result is determined by invoking getLong(int, int) and converting the result to int.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
int The value of the field as an int.

public long getLong (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a long.

The result is determined as follows:

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
long The value of the field as a long.

public int getNumRows ()

Added in API level 1

Gets the number of rows in this window.

Returns
int The number of rows in this cursor window.

public short getShort (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a short.

The result is determined by invoking getLong(int, int) and converting the result to short.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
short The value of the field as a short.

public int getStartPosition ()

Added in API level 1

Gets the start position of this cursor window.

The start position is the zero-based index of the first row that this window contains relative to the entire result set of the Cursor.

Returns
int The zero-based start position.

public String getString (int row, int column)

Added in API level 1

Gets the value of the field at the specified row and column index as a string.

The result is determined as follows:

  • If the field is of type FIELD_TYPE_NULL, then the result is null.
  • If the field is of type FIELD_TYPE_STRING, then the result is the string value.
  • If the field is of type FIELD_TYPE_INTEGER, then the result is a string representation of the integer in decimal, obtained by formatting the value with the printf family of functions using format specifier %lld.
  • If the field is of type FIELD_TYPE_FLOAT, then the result is a string representation of the floating-point value in decimal, obtained by formatting the value with the printf family of functions using format specifier %g.
  • If the field is of type FIELD_TYPE_BLOB, then a SQLiteException is thrown.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
String The value of the field as a string.

public int getType (int row, int column)

Added in API level 11

Returns the type of the field at the specified row and column index.

The returned field types are:

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
int The field type.

public boolean isBlob (int row, int column)

Added in API level 1

This method was deprecated in API level 11.
Use getType(int, int) instead.

Returns true if the field at the specified row and column index has type FIELD_TYPE_BLOB or FIELD_TYPE_NULL.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if the field has type FIELD_TYPE_BLOB or FIELD_TYPE_NULL.

public boolean isFloat (int row, int column)

Added in API level 5

This method was deprecated in API level 11.
Use getType(int, int) instead.

Returns true if the field at the specified row and column index has type FIELD_TYPE_FLOAT.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if the field has type FIELD_TYPE_FLOAT.

public boolean isLong (int row, int column)

Added in API level 5

This method was deprecated in API level 11.
Use getType(int, int) instead.

Returns true if the field at the specified row and column index has type FIELD_TYPE_INTEGER.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if the field has type FIELD_TYPE_INTEGER.

public boolean isNull (int row, int column)

Added in API level 1

This method was deprecated in API level 11.
Use getType(int, int) instead.

Returns true if the field at the specified row and column index has type FIELD_TYPE_NULL.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if the field has type FIELD_TYPE_NULL.

public boolean isString (int row, int column)

Added in API level 5

This method was deprecated in API level 11.
Use getType(int, int) instead.

Returns true if the field at the specified row and column index has type FIELD_TYPE_STRING or FIELD_TYPE_NULL.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if the field has type FIELD_TYPE_STRING or FIELD_TYPE_NULL.

public static CursorWindow newFromParcel (Parcel p)

Added in API level 1

Parameters
p Parcel
Returns
CursorWindow

public boolean putBlob (byte[] value, int row, int column)

Added in API level 1

Copies a byte array into the field at the specified row and column index.

Parameters
value byte: The value to store.
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if successful.

public boolean putDouble (double value, int row, int column)

Added in API level 1

Puts a double-precision floating point value into the field at the specified row and column index.

Parameters
value double: The value to store.
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if successful.

public boolean putLong (long value, int row, int column)

Added in API level 1

Puts a long integer into the field at the specified row and column index.

Parameters
value long: The value to store.
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if successful.

public boolean putNull (int row, int column)

Added in API level 1

Puts a null value into the field at the specified row and column index.

Parameters
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if successful.

public boolean putString (String value, int row, int column)

Added in API level 1

Copies a string into the field at the specified row and column index.

Parameters
value String: The value to store.
row int: The zero-based row index.
column int: The zero-based column index.
Returns
boolean True if successful.

public boolean setNumColumns (int columnNum)

Added in API level 1

Sets the number of columns in this window.

This method must be called before any rows are added to the window, otherwise it will fail to set the number of columns if it differs from the current number of columns.

Parameters
columnNum int: The new number of columns.
Returns
boolean True if successful.

public void setStartPosition (int pos)

Added in API level 1

Sets the start position of this cursor window.

The start position is the zero-based index of the first row that this window contains relative to the entire result set of the Cursor.

Parameters
pos int: The new zero-based start position.

public String toString ()

Added in API level 1

Returns a string containing a concise, human-readable description of this object. Subclasses are encouraged to override this method and provide an implementation that takes into account the object's type and data. The default implementation is equivalent to the following expression:

   getClass().getName() + '@' + Integer.toHexString(hashCode())

See Writing a useful toString method if you intend implementing your own toString method.

Returns
String a printable representation of this object.

public void writeToParcel (Parcel dest, int flags)

Added in API level 1

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written.
flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

Protected Methods

protected void finalize ()

Added in API level 1

Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.

Note that objects that override finalize are significantly more expensive than objects that don't. Finalizers may be run a long time after the object is no longer reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup. Note also that finalizers are run on a single VM-wide finalizer thread, so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary for a class that has a native peer and needs to call a native method to destroy that peer. Even then, it's better to provide an explicit close method (and implement Closeable), and insist that callers manually dispose of instances. This works well for something like files, but less well for something like a BigInteger where typical calling code would have to deal with lots of temporaries. Unfortunately, code that creates lots of temporaries is the worst kind of code from the point of view of the single finalizer thread.

If you must use finalizers, consider at least providing your own ReferenceQueue and having your own thread process that queue.

Unlike constructors, finalizers are not automatically chained. You are responsible for calling super.finalize() yourself.

Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.

Throws
Throwable

protected void onAllReferencesReleased ()

Added in API level 1

Called when the last reference to the object was released by a call to releaseReference() or close().