2012-04-30 11 views
29

Gibt es eine Möglichkeit, die Anzahl der zurückgegebenen Zeilen auf einen Cursor zu begrenzen? Ich habe ein Telefon mit etwa 4000 Kontakten, ich brauche nur ein paar von ihnen.Begrenzung der Anzahl der Zeilen in einer ContentResolver.query() - Funktion

Dies ist der Code i

 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"); 
     } 
bin mit

die Log ich erhalte ist

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 

Antwort

33

die Anzahl der Ergebnisse in Ihrem Cursor versuchen zu begrenzen:

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

Danke Sam, ich habe total vergessen den Cursor zu bewegen, sogar innerhalb der Schleife, wie dumm! Ich werde Ihren Rat versuchen und zu Ihnen zurückkehren – user1347945

+0

Aktualisiert mit einem Limit-Beispiel, aber es ist auf die ersten 100 Ergebnisse beschränkt. Die wirkliche Frage lautet: Wie wollen Sie den Cursor eingrenzen? Nur Leute mit dem Namen "Bob"? – Sam

+0

ummmm, der Fehler bewegte den Cursor wirklich, aber gut, dass ich jetzt gelernt habe, wie man den Cursor eingrenzt. Die Frage war, wie ich die Cursorgröße begrenzen sollte, so dass ich eine begrenzte Anzahl von Zeilen erhalten kann, selbst wenn die Datenbank mehr als die angegebene Anzahl hatte ... – user1347945

Verwandte Themen