¿Por qué los Cursores Android comienzan antes de la primera fila de resultados y terminan después de la última fila?

Estoy tratando de entender por qué comenzaría el cursor antes de la primera posición en una fila y por qué terminaría después de la última posición. ¿Hay una ventaja inherente a hacerlo de esta manera?

Por ejemplo:

public abstract int getPosition () 

Desde: API Nivel 1 Devuelve la posición actual del cursor en el conjunto de filas. El valor es cero. Cuando el conjunto de filas se devuelve por primera vez, el cursor estará en la posición -1, que está antes de la primera fila. Después de que se devuelva la última fila, otra llamada a siguiente () dejará el cursor más allá de la última entrada, en una posición de count ().

Devuelve la posición actual del cursor.

Gracias,

Debido a que un Cursor no está garantizado para ser poblado con filas. Si obtuviste un Cursor de una base de datos con 0 filas, la posición inicial en 0 no tiene sentido ya que no hay una fila en la posición 0.

Así que usted puede hacer esto:

 Cursor c = db.rawQuery(...); while (c.moveToNext()) { // deal with one row at a time } 

Es de lejos la mejor manera de iterar sobre los resultados de un Cursor (ver ¿Cuál es la mejor manera de iterar un Cursor Android? ), Y no funcionaría si no se iniciara antes de la primera fila.

Android SQLiteCursor es un objeto wrapper para cursor de base de datos SQLite nativo, que es una estructura de control que le permite recorrer registros en una base de datos.
Supongo que antes de llamar a setPosition o moveToFirst cursor nativo no carga los resultados de la consulta en la memoria para ahorrar espacio.

  • Actualización de versiones de base de datos sqlite?
  • Android: Excepción al actualizar la tabla en la base de datos
  • Obtener nueva fila agregada en la tabla SQLite
  • Búsqueda en una base de datos SQLite que contenga datos cítricos
  • La columna _id no existe
  • ¿Cuál es la forma más rápida de cargar 10000 filas de la base de datos SQLite?
  • ¿Cómo comprobar si existe una tabla en Android?
  • Android sqlite - Cómo administrar un valor entero en la cláusula where
  • Cómo actualizar la columna con ORMLite
  • cómo guardar datos de json en sqlite en android
  • Cómo contar el número de columnas en una tabla en SQLITE?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.