2016-06-22 1 views
0

J'utilise la bibliothèque de sélecteurs de contacts pour sélectionner plusieurs contacts mais si un contact ne contient aucun nombre et s'il est sélectionné, il affiche une exception de pointeur nul dans l'édition champ de texte. Comment supprimer ce message et également comment supprimer la virgule de fin. Voici mon code.Comment afficher Seulement si le numéro de téléphone est présent en utilisant 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); 
+0

quelle bibliothèque utilisez-vous? la classe Contact a-t-elle une méthode pour obtenir le numéro de téléphone? – Pr38y

+0

com.onegravity.contactpicker cette bibliothèque ........ ContactPickerActivity est la classe et oui il a une méthode à getPhoneNumber – stackover65

+0

puis vérifier si la condition pour vérifier le numéro de téléphone est là ou non, basé sur cette mise à jour 'result' – Pr38y

Répondre

0

s'il vous plaît essayer de vérifier ce code

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); 


    } 

} 
0

Aller à la ContactFragment et remplacer onEventMainThread() au-dessous d'un ....

@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); 
    } 

Espérons que cela aider .....