2012-04-30 22 views
29

Có cách nào giới hạn số hàng trả về cho con trỏ không? Tôi có điện thoại với khoảng 4000 số liên lạc, tôi chỉ cần một số người trong số họ.giới hạn số lượng hàng trong hàm ContentResolver.query()

này là mã tôi đang sử dụng

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

Log tôi nhận được là

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 

Trả lời

33

Để hạn chế số lượng kết quả ở con trỏ thử của bạn:

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

Cảm ơn Sam, tôi hoàn toàn quên di chuyển con trỏ, ngay cả trong vòng lặp, Làm thế nào ngu ngốc! Tôi sẽ cố gắng lời khuyên của bạn và quay lại với bạn – user1347945

+0

Được cập nhật với một ví dụ giới hạn, nhưng nó được giới hạn trong 100 kết quả đầu tiên. Câu hỏi thực sự là _how_ bạn có muốn giới hạn con trỏ không? Chỉ những người có tên "Bob"? – Sam

+0

ummmm, sai lầm đã thực sự di chuyển con trỏ xung quanh, nhưng điều tốt mà tôi đã học được bây giờ làm thế nào để giới hạn con trỏ. Câu hỏi đặt ra là, làm thế nào để giới hạn kích thước con trỏ để tôi có thể nhận được số hàng hạn chế ngay cả khi cơ sở dữ liệu có nhiều hơn số tôi đã chỉ định ... – user1347945

Các vấn đề liên quan