2012-04-30 3 views
29

返される行の数をカーソルに限定する方法はありますか? 私は約4000の連絡先を持つ電話を持っています。私はちょうどそれらのいくつかが必要です。ContentResolver.query()関数の行数を制限する

これは私が得ているログは、あなたのカーソルの試みで結果の数を制限するには

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 

答えて

33

ある

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

を使用しているコードです:

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

おかげでサム、私は完全にループ内でも、カーソルを移動することを忘れて、どのように愚か!私はあなたのアドバイスを試み、あなたに戻ってきます – user1347945

+0

限界の例で更新されましたが、最初の100の結果に限られています。本当の質問は_how_カーソルを制限したいのですか? "Bob"という名前の人だけ? – Sam

+0

ummmm、間違いは本当にカーソルを動かしていましたが、今私はどのようにカーソルを制限するかを学んだことが良いことです。問題は、カーソルのサイズをどのように制限すれば、データベースに指定した数よりも多くの行があっても制限された行数を得ることができることです。 – user1347945

関連する問題