Я использую фильтр с ListView, который заполняется через контактные данные, которые содержат имена и номера.
Теперь у меня есть две проблемы, когда я набираю текст в EditText
, который в свою очередь вызывает adapter.getFilter().filter(s.toString())
1) Когда я набираю 'aa' последний (в моем коде)
, я вижу имя, начинающееся с 'aa', например, aakruti, но в то же время я могу просматриватьадреса электронной почты, которые я не хотел, чтобы они были видны при срабатывании фильтра.
2) Когда я набираю 'aa' последний(во встроенном списке контактов телефона)
я могу видеть имя, начинающееся с 'aa', например, aakruti
, но мне не хватает одного имени, то есть SATYA (которое отображается при поиске контактов, когда я набираю 'аа 'последний в него)
вот мой запрос фильтра, внутри runQueryOnBackgroundThread
StringBuilder buffer = null;
String[] args = null;
if (constraint != null) {
buffer = new StringBuilder();
buffer.append("UPPER(");
buffer.append(ContactsContract.Contacts.DISPLAY_NAME);
buffer.append(") GLOB ?");
args = new String[] { constraint.toString().toUpperCase() + "*" };
}
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
System.out.println(buffer);
return mContent.query(
ContactsContract.Contacts.CONTENT_URI,
projection,
buffer == null ? null : buffer.toString(),
args,sortOrder
);
данные проекции
public static String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
EDIT
До сих пор я пытался получить доступ к
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME
ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME
ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME
Но GIVEN_NAME отображает немного email address
тоже и даженапример, contact name which has email address
,
xyz@gmail.com
Raul Jakson (which only has email address no contact number)
Raul Jakson ( i see this name twice as it has two different email address , but i wanna see it as name )
, поэтому кто-нибудь может сказать мне, как я могу ограничить адреса электронной почты и показывать только Имена, в которых есть только контактные телефоны?