2017-05-21 4 views
0

erhalten alle Arten von einem (einzigen) Kontaktalle Kontakte bekommen und alle Arten von Anzahl der Einzelkontaktnamen

im All Kontakt mit allen Arten von einem einzigen Kontakt bekommen und ich bekommt es gelungen Aber Wenn Druck innerlist (mehrfache Art Telefonnummer enthält) für entsprechend die Größe von innerlist für den einzelnen Kontakt zuletzt hinzugefügten Kontakt drucken ..... (nicht Beispiel gelesen hat)

Beispiel

für die Ex: Kontakt Name: ABC Typen Nummer 3 MOBILE: 123, HOME: 456, BüRO: 789 SO DASS DIESER CODE for (int i = 0; i < numberlist.size(); i++) { Log.e("inner", numberlist.get(i).getName() + " number " + numberlist.get(i).getNumber()); }

Wird drucken (dreimal aber gleiche Kontaktnummer) (innere, ABC-Nummer 789) ;

pojo Klasse

public class ContactClass extends RealmObject { 
    @PrimaryKey 
    String id; 
    String name; 
    String number; 
    RealmList<ContactClass> numberlist; 

    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 


    public ContactClass() { 
    } 

    public RealmList<ContactClass> getNumberlist() { 
     return numberlist; 
    } 

    public void setNumberlist(RealmList<ContactClass> numberlist) { 
     this.numberlist = numberlist; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Ergebnis will ich

Ich möchte Kontaktnamen und alle Arten von Zahlen dieses einzelnen Namen speichern ..

Code ich habe

public void loadContact() { 
    //swipeRefreshLayout.setRefreshing(true); 
    RealmList<ContactClass> list = new RealmList<>(); 
    PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); 


    ContentResolver cr = getActivity().getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      RealmList<ContactClass> numberlist = new RealmList<>(); 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

      ContactClass contactClass = new ContactClass(); 
      contactClass.setId(id); 
      contactClass.setName(name); 
      if (cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) { 
       Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
         new String[]{id}, null); 
       while (pCur.moveToNext()) { 


        String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        int type = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
        // Log.e("called", phoneNo + " " + name + " " + id); 
        switch (type) { 

         case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"home"); 
            numberlist.add(contactClass); 
           } 


          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 


          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"mobile"); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 


          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"work"); 
            numberlist.add(contactClass); 
           } 


          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"eaxhome"); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"faxwork"); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_MAIN: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"main"); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER: 
          try { 

           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo + " name " + name+" type "+"home"); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
         case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER: 
          try { 
           if (phoneNo.equals("") || phoneNo != null) { 
            contactClass.setNumber(phoneNo); 
            Log.e("test", phoneNo); 
            numberlist.add(contactClass); 
           } 
          } catch (Exception e) { 
           Log.d(TAG, e.toString()); 
          } 

          break; 
        } 
       } 
       pCur.close(); 

       /* HashSet<ContactClass> h = new HashSet<>(); 
       h.addAll(numberlist); 
       numberlist.clear(); 
       numberlist.addAll(h);*/ 
       contactClass.setNumberlist(numberlist); 
       list.add(contactClass); 
       for (int i = 0; i < numberlist.size(); i++) { 
        Log.e("inner", numberlist.get(i).getName() + " number " + numberlist.get(i).getNumber()); 
       } 

      }//1637 

     } 
     // saveToRealm(list); 
     /* try { 
      HashSet hs = new HashSet(); 

      hs.addAll(list); // demoArrayList= name of arrayList from which u want to remove duplicates 
      List<ContactClass> classList = new ArrayList<>(); 
      list.clear(); 
      classList.addAll(hs); 
      saveToRealm(classList); 
      Log.e("resize", classList.size() + ""); 
     } catch (Exception e) { 
      Log.d("savetorealm", "catch " + e.toString()); 
     }*/ 
    } 
} 

Antwort

0

versuchte Wenn ein Kontakt 2 oder mehr Telefonnummern, werden Sie mehr ContactClass für denselben Kontakt erschaffen.

Versuchen Sie, Ihre Hauptschleife zu diesem Wechsel:

// this loop iterates once per contact 
while (cur.moveToNext()) { 
    if (cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) { 
     RealmList<ContactClass> numberlist = new RealmList<>(); 
     String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

     // create a new ContactClass just once per contact 
     ContactClass contactClass = new ContactClass(); 
     contactClass.setId(id); 
     contactClass.setName(name); 

     Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
       ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
       new String[]{id}, null); 
     // this loop iterates once per phone for each contact 
     while (pCur.moveToNext()) { 

      String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      int type = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
      Log.e("called", phoneNo + " " + name + " " + id); 
      switch (type) { 
       ... 
      } 
     } 
     pCur.close(); 

     // add the new ContactClass just once per contact to list 
     contactClass.setNumberlist(numberlist); 
     list.add(contactClass); 

     for (int i = 0; i < numberlist.size(); i++) { 
      Log.e("numbersize", numberlist.get(i).getNumber() + numberlist.get(i).getName() + numberlist.size() + ""); 
     } 

    } 
} 
+0

i meine Frage aktualisiert haben kann u plz ans davon? –

Verwandte Themen