Ich implementiere eine AutoCompleteTextView und ich brauche Name und E-Mail von allen meinen Kontakten. Ich habe dieses Snippet gefunden, das asynchron läuft, aber es ist sehr langsam.Der Name und die E-Mail-Adresse aus der Kontaktliste ist sehr langsam
ContentResolver cr = 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));
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);
while (emailCur.moveToNext()) {
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
autoCompleteAdapter.add(name + " - " + email);
}
emailCur.close();
}
}
}
Ich mache eine Art innere Abfrage und ich denke, das ist das Problem. Gibt es eine Möglichkeit, es zu tunen und es schneller zu machen?
Haben Sie es geschafft, es funktioniert zu bekommen? –
Das äußere 'if (cur.getCount()> 0)' ist redundant und kann entfernt werden. – mdup