2016-12-09 4 views
0

電話からすべての連絡先とその番号を取得しようとしていますが、値を印刷しようとすると配列が切り取られてしまい、結果の半分が印刷されませんこれは起こっている可能性がありますが、リストビューではすべてが印刷されます。スニペットは次のとおりですすべての値を持っていないArraylist

String namearray[]; 
String phonearray[]; 

lv1 = (ListView) findViewById(R.id.listView1); 

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
while (phones.moveToNext()) 
{ 
    //Read Contact Name 
    String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

    //Read Phone Number 
    String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

    namecsv += name + ","; 
    phonecsv += phoneNumber + ","; 
} 
phones.close(); 


//============================================== 
// Convert csvstrimg into array 
//============================================== 
namearray = namecsv.split(","); 
phonearray = phonecsv.split(","); 

System.out.println("Names: " +phonecsv.toString()); 

//Create Array Adapter and Pass ArrayOfValues to it. 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1,namearray); 

//BindAdpater with our Actual ListView 
lv1.setAdapter(adapter); 

お勧めはありますか?

+1

ジャスト注:これはphonecsvは、ArrayListの<文字列>であることを前提として、ループ内の 'String'sを連結していない、代わりに' 'StringBuilder'or StringBuffer'を使用しています。 – manfcas

+1

ListViewでnamearrayを表示しているときにphonecsvを表示していますが、一部の名前に対応する電話番号がない可能性がありますか? – rnk

+1

@manfcas 'StringBuilder'、' StringBuffer'のみが古くなっています。 – Tom

答えて

0

1行にすべて印刷するのではなく、ArrayListを繰り返し処理し、各行を別々に印刷することができます。

 for (String temp : phonecsv) { 
      System.out.println(temp); 
     } 
関連する問題