¿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.

  • Necesito el equivalente SQLite de MySQL para trabajar con unix timestamps
  • Buscar sugerencias de diferentes tablas en diferentes actividades
  • Cómo comparar representaciones de cadena de dobles si termina en .00
  • Autocompletar de Android con SQLite LIKE funciona parcialmente
  • Cómo funciona SQLiteOpenHelper Context
  • SQLite de Android - Clave principal - Insertar en la tabla
  • Cómo eliminar las viejas filas de la base de datos sqlite en android?
  • SQLite incapaz de abrir el archivo de base de datos (código 14) en la consulta "SELECT" frecuente
  • Permitir sólo la entrada de datos únicos con Android SQLite?
  • Obtener los siguientes N puntos geográficos más cercanos
  • Base de datos SQLite en tarjeta SD
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.