Próbuję uzyskać identyfikatory e-mail kontaktów. Do tego używam programu Cursor Loader. Jest jeden problem, że otrzymuję również duplikaty identyfikatorów e-mail. Jak usunąć powielanie wiadomości e-mail. Czy zamiast używać CursorLoader należy użyć surowego zapytania "SELECT DISTINCT", czy jest jakieś inne rozwiązanie?Używanie CursorLoader do odbierania wiadomości e-mail powoduje duplikowanie wiadomości e-mail
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Email.DATA};
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP +"='1' AND " + Email.DATA +" IS NOT NULL AND " + Email.DATA +" != \"\" " ;
//showing only visible contacts
String[] selectionArgs = null;
return new CursorLoader(this, ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, selection, selectionArgs, sortOrder);
}
Dzięki Marsie użyłem tego rodzaju podejścia. Szukałem innego rozwiązania, w którym nie musiałbym używać pamięci. –
Zrobiłem coś podobnego, ale użyłem Cursora zamiast listy. – zeeshan