私はAndroidを初めて使用し、連絡先を取得してリストビューに表示したいと考えています。asynctaskで連絡先を取得するためのコードは次のとおりです。各連絡先を取得した後にリストビューを更新する方法を教えてください。
protected Void doInBackground(Void... params) {
ContentResolver cr = ReadContactsActivity.this.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phone = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//li.add("Name:"+name+",Number:"+phone);
publishProgress("Name:"+name+",Number:"+phone);
}
pCur.close();
}
}
}
return null;
}
// A callback method executed on UI thread, invoked by the publishProgress()
// from doInBackground() method
@Override
protected void onProgressUpdate(String... values) {
list=(ListView) findViewById(R.id.lvDisplay);
ArrayAdapter<String> adp=new ArrayAdapter<String>
(getBaseContext(),R.layout.list,R.id.label,li);
list.setAdapter(adp);
}