2011-08-04 9 views
0

こんにちはfrnds私は連絡先リストで指定された名前をすべて取得したいが、このメソッドを呼び出すたびに連絡先リストの最初の値を返すたびにplsは下のコードを見ています。どのように私はのgetName(長い_id)メソッド呼び出し毎に次の値を読み取る....構造名を取得するたびに最初に連絡先の名前が返されます。 android

public String [] getName(long _id) 
{ 
    String Given = null ; 
    String family = null ; 
    try { 
     String whereName = ContactsContract.Data.MIMETYPE + " = ?"; 
     String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }; 
     Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME); 

     if(cursor != null) { 
      while (cursor.moveToNext()) { 
       // This would allow you get several email addresses 
       // if the email addresses were stored in an array 
       Given = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); 
       // family = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); 

       // TODO Auto-generated method stub 
       if(Given != null) 
        break; 
      } 
     }  
    } catch (Exception e) { 
     Log.i("test", "Exception " + e.toString()); 
    } finally { 
     if(cursor != null) { 
      cursor.deactivate(); 
      cursor.close();    
     } 
    } 
    //return emailid; 
    //return emailType; 

    Log.i("RETURN given name.....", Given); 
    return new String[] { Given};  
} 

答えて

0

コードuは、それがいずれの場合に動作しません掲載しています。 try{}ブロック内の変数を宣言してfinally{}ブロックに使用することはできません。しかしまずあなたの質問について話しましょう。

コードを見ると、常に同じ名前を持つ_idパラメータを使用することはありません。現在の行のIDがgetName(long _id)のパラメータとして取得したIDと同じであるかどうかを確認する必要があります。これには次のようなものが必要です。

while (cursor.moveToNext()) { 

       if (cursor.getLong(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName._ID)) == _id) { 
        Given = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); 
        break; 
       } 
      } 

これがうまくいけばうまくいきます。

そしてtry{}ブロックの前cursorために少なくとも宣言を置くことを忘れないでください:)

+0

1正しい答えを実際に私は同じ問題を持って...どのような方法のおかげで.. :)幸せです何 –

+0

をcoadingあなたはまだ持っている問題? – natronite

+0

問題の1つは、連絡先リストから「表示名」を取得しているときに、すべての連絡先が電子メールで表示されていることです。電子メールアドレスは、.csvファイル(列名と連絡先番号を含む) emailidので、私は自分のemailidから電子メールを取得して、.csvファイルの名前の列に表示する方法を心配していますか? –

関連する問題