Как показать, только если номер телефона присутствует с помощью contactpicker
Я использую библиотеку выбора контактов для выбора нескольких контактов, но если у контакта нет номера и если он выбран, он показывает исключение нулевого указателя в текстовом поле редактирования. Как удалить это сообщение, а также как удалить запятую. Ниже мой код.
try {
int pos = 0;
for (Contact contact : contacts) {
String displayName = contact.getDisplayName();
result.append(displayName + ",");
result.setSpan(new BulletSpan(15), pos, pos + displayName.length() + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
//pos += displayName.length() + 1;
}
}
catch (Exception e) {
result.append(e.getMessage());
}
contactsView.setText(result);
2 ответа
Перейти к ContactFragment
и заменить onEventMainThread()
с нижеуказанным....
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventMainThread(ContactsLoaded event) {
EventBus.getDefault().removeStickyEvent(event);
List<Contact> c = new ArrayList<>();
mContacts = event.getContacts();
// mFilteredContacts = mContacts;
for (Contact contact : mContacts) {
if (contact.getPhone(2) != null)
c.add(contact);
}
mFilteredContacts = c;
mContacts = c;
mAdapter.setData(mFilteredContacts);
updateEmptyViewVisibility(mContacts);
}
Надеюсь, это поможет.....
Пожалуйста, попробуйте проверить этот код
void getAllContacts() {
ArrayList<String> nameList = new ArrayList<>();
ArrayList<String> numberList = new ArrayList<>();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER;
String[] list = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.Contacts._ID};
Cursor cursor = getContentResolver().query(uri, list, selection, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
cursor.moveToFirst();
if (cursor.moveToFirst()) {
do {
String contactNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
contactNuber.add(contactNumber);
contactsName.add(contactName);
nameList.add(contactName);
numberList.add(contactNumber);
} while (cursor.moveToNext());
cursor.close();
myContacts.put("name", nameList);
myContacts.put("number", numberList);
}
}