Cosas a saber sobre un cursor Android:

El cursor tiene unos métodos que nos permiten navegar por él. A continuación vemos como comprobar si el cursor está vacío y cómo navegar por él fila a fila en caso de no estarlo.



if (cur.moveToFirst() == false){
   //el cursor está vacío
   return;
}

//El cursor ahora apunta a la primera fila
// Accedemos a las columnas
int nameColumnIndex = cur.getColumnIndex(People.NAME);
String name = cur.getString(nameColumnIndex);


//Veamos ahora como iterar sobre un cursor
while(cur.moveToNext()){
   //El curosr se ha movido correctamente
   //Accedemos a los campos
}

En el ejemplo de arriba se asume que el cursor está posicionado antes de la primera fila. Para posicionarlo en la primera fila usamos moteToFirst(). Este método devuelve false si el cursor está vacío. Después usamos moveToNext() repetitivamente para avanzar en el cursor.

Para ayudarnos a saber donde se encuentra el cursor, Android proporciona los siguientes métodos:

isBeforeFirst()
isAfterLast()
isClosed()

Haciendo uso de estos métodos podemos recorrer el cursor con un for en lugar de con un while:

// Obtenemos los índices de las columnas
int nameColumn = cur.getColumnIndex(People.NAME);
int phoneColumn = cur.getColumnIndex(People.NUMBER);

//Recorremos el cursor
for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()){
   String name = cur.getString(nameColumn);
   String phoneNumber = cur.getString(phoneColumn);
}

Por último, para obtener el número de registros que hay en el cursor, podemos usar el método getCount().

Siguiente Tema: Usando la cláusula Where