Как показать, только если номер телефона присутствует с помощью 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);


    }

}
Другие вопросы по тегам