29
¿Hay alguna manera de limitar el número de filas devueltas a un cursor? Tengo un teléfono con aproximadamente 4000 contactos, solo necesito algunos de ellos.limitando el número de filas en una función ContentResolver.query()
este es el código que estoy usando
db = new dBHelper(this);
ContentResolver cr = getContentResolver();
Cursor cursor;
cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, ContactName + " ASC");
Log.i(TAG, CLASSNAME + " got contacts entries");
for (int it = 0; it <100 ; it++){//cursor.getCount()
Log.i(TAG, CLASSNAME + " getting string");
String mytimes_contacted = cursor.getString(cursor.getColumnIndex(dBHelper.times_contacted));
Log.i(TAG, CLASSNAME + " done from the string");
}
el Registro estoy consiguiendo es
I/Check(11506): [ContactsPicker] got contacts entries
I/Check(11506): [ContactsPicker] getting first string
D/AndroidRuntime(11506): Shutting down VM
W/dalvikvm(11506): threadid=1: thread exiting with uncaught exception (group=0x2aac8578)
D/dalvikvm(11541): GC_CONCURRENT freed 923K, 46% free 4000K/7303K, external 1685K/2133K, paused 1ms+8ms
E/AndroidRuntime(11506): FATAL EXCEPTION: main
E/AndroidRuntime(11506): java.lang.RuntimeException: Unable to start activity ComponentInfo{~~my package name~~}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 3537
Gracias Sam, me olvidé por completo de mover el cursor, incluso dentro del ciclo, ¡qué estúpido! Probaré su consejo y le responderé – user1347945
Actualizado con un ejemplo de límite, pero está limitado a los primeros 100 resultados. La verdadera pregunta es _cómo_ quieres limitar el cursor? ¿Solo personas llamadas "Bob"? – Sam
ummmm, el error realmente fue mover el cursor, pero bueno que aprendí cómo limitar el cursor. La pregunta era cómo limitar el tamaño del cursor para poder obtener un número limitado de filas, incluso si la base de datos tenía más del número que he especificado ... – user1347945