2012-04-30 9 views
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 

Respuesta

33

Para limitar el número de resultados en el cursor intento:

cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, ContactName + " LIMIT 100"); 
while(cursor.moveToNext()) { 
    // something clever 
} 
+0

Gracias Sam, me olvidé por completo de mover el cursor, incluso dentro del ciclo, ¡qué estúpido! Probaré su consejo y le responderé – user1347945

+0

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

+0

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

Cuestiones relacionadas