2012-04-30 11 views
29

Czy istnieje sposób ograniczenia liczby zwracanych wierszy do kursora? Mam telefon z około 4000 kontaktów, po prostu potrzebuję niektórych z nich.ograniczenie liczby wierszy w funkcji ContentResolver.query()

jest to kod używam

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

dziennika Dostaję jest

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 

Odpowiedz

33

Aby ograniczyć liczbę wyników w kursor Spróbuj:

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

Dzięki Sam, zupełnie zapomniałem o przesunięciu kursora, nawet w pętli, Jak głupi! Spróbuję twojej porady i wrócę do ciebie – user1347945

+0

Zaktualizowany za pomocą przykładu limitu, ale jest ograniczony do pierwszych 100 wyników. Prawdziwym pytaniem jest _how_ czy chcesz ograniczyć kursor? Tylko ludzie o imieniu "Bob"? – Sam

+0

ummmm, błąd naprawdę poruszał kursorem, ale dobrze, że nauczyłem się teraz ograniczać kursor. Pytanie brzmiało, jak ograniczyć rozmiar kursora, aby uzyskać ograniczoną liczbę wierszy, nawet jeśli baza danych miała więcej niż podany numer ... – user1347945

Powiązane problemy