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

3 Solutions collect form web for “¿Por qué los Cursores Android comienzan antes de la primera fila de resultados y terminan después de la última fila?”

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.

  • Es posible copia de seguridad y restaurar un archivo de base de datos en android? Dispositivos no root
  • ¿Es posible usar Couch DB o MySql o cualquier otro DB en Android?
  • Cómo persistir el permiso en android API 19 (KitKat)?
  • ¿Cuál es el equivalente más cercano a una variable Session / Cookie en Android?
  • Integración ormlite-4.9 con sqlcipher-2.08
  • DB de SQLite accedido desde múltiples subprocesos
  • ¿Cómo puedo crear una función definida por el usuario en SQLite?
  • SQLITE - eliminar filas con join interno?
  • Cómo insertar a granel de Json a Sqlite en Android
  • Obtener la distancia más corta desde un punto
  • ¿Cómo puedo borrar una base de datos SQLite cada vez que inicie mi aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.