Курсор с одним номером телефона для каждого контакта - PullRequest
3 голосов
/ 24 ноября 2011

Я знаю, как получить имена и номера контактов в курсоре, но когда я помещаю их в представление списка, я получаю несколько номеров для одного и того же контакта в отдельных строках, т. Е. Если у контакта несколько номеров, все эти номера отображается. Как я могу выбрать только один номер для каждого контакта?

Uri uri = Phone.CONTENT_URI;
String[] projection = { Phone.DISPLAY_NAME, Phone.NUMBER, Phone._ID };
String sortOrder = Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

Cursor cursor = managedQuery(uri, projection, null, null, sortOrder);

Спасибо за любую помощь заранее!

1 Ответ

2 голосов
/ 24 ноября 2011

Если я вас правильно понял, и вы хотите показывать только один номер на DISPLAY_NAME, не обращая внимания на все остальные, вы можете использовать этот хак:

String selection = "1) GROUP BY (" + Phone.DISPLAY_NAME;
Cursor cursor = managedQuery(uri, projection, selection , null, sortOrder);

edit Краткое объяснение:это своего рода sql-инъекция: он вставит 1 в WHERE часть запроса, делая его всегда верным, и добавит GROUP BY, не поддерживается managedQuery()

...