2016-11-08 1 views
2

Когда я пытаюсь извлечь один объект из listConCard (в моем классе активности ContactCard.class), «conName» для всех карточек-контактов получает правильно, но я не получаю правильные данные из его родственных массивов «conPhoneType», «conPhoneValue», «conEmailType», «conEmailValue».Данные из списка объектов класса модели не извлекаются правильно?

listConCard - это список объектов моего класса модели ContactCardModel.class.

я добавляя "ContactCardModel" объекты в listConCard следующего

listConCard.add(new ContactCardModel(conName, conPhoneType, conPhoneValue, conEmailType, conEmailValue)); 

и извлечение данных объектов "ContactCardModel" следующий

for(int i = 0; i < listConCard.size(); i++){ 

    Log.e("InAdp", listConCard.get(i).getConName()); // name is returing correctly. 

    for(int x = 0; x < listConCard.get(i).getConPhoneType().size(); x++) 
     Log.e("InAdp conPhone", listConCard.get(i).getConPhoneType().get(x) + ": " + listConCard.get(i).getConPhoneValue().get(x)); 


    for(int x = 0; x < listConCard.get(i).getConEmailType().size(); x++) 
     Log.e("InAdp conEmail", listConCard.get(i).getConEmailType().get(x) + ": " + listConCard.get(i).getConEmailValue().get(x)); 

} 

значения обоих массивы getConPhoneType и getConPhoneValue возвращается 0 элементов

значения обоих массивов getConEmailType и getConEmailValueare возвращают 1 элемент

размера conPhoneType и conPhoneValue такого же

размера conEmailType и conEmailValue такого же

ContactCard.class

String conName; 
List<String> conPhoneType; 
List<String> conPhoneValue; 
List<String> conEmailType; 
List<String> conEmailValue; 
List<ContactCardModel> listConCard; 

int i = 1; 

    for (AddressBookContact addressBookContact : list) { 

     conName = addressBookContact.name; 

     conPhoneType.clear(); 
     conPhoneValue.clear(); 
     if(addressBookContact.phones != null) { 

      for (int x = 0; x < addressBookContact.phones.size(); x++) { 
       int type = (int) addressBookContact.phones.keyAt(x); 
       String typeName = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(addressBookContact.res, type, ""); 
       String phValue = addressBookContact.phones.valueAt(x); 

       conPhoneType.add(typeName); 
       conPhoneValue.add(phValue); 
      } 
     } 

     conEmailType.clear(); 
     conEmailValue.clear(); 
     if(addressBookContact.emails != null){ 

      for(int x = 0; x < addressBookContact.emails.size(); x++){ 
       int type = (int) addressBookContact.emails.keyAt(x); 
       String typeName = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(addressBookContact.res, type, ""); 
       String emailValue = addressBookContact.emails.valueAt(x); 

       conEmailType.add(typeName); 
       conEmailValue.add(emailValue); 
      } 
     } 

     listConCard.add(new ContactCardModel(conName, conPhoneType, conPhoneValue, conEmailType, conEmailValue)); 

    } 

ContactCardModel.class

public class ContactCardModel { 

String conName; 
List<String> conPhoneType; 
List<String> conPhoneValue; 
List<String> conEmailType; 
List<String> conEmailValue; 

public ContactCardModel(String mConName, List<String> mConPhoneType, List<String> mConPhoneValue, 
         List<String> mConEmailType, List<String> mConEmailValue){ 

    conPhoneType = new ArrayList<String>(); 
    conPhoneValue = new ArrayList<String>(); 
    conEmailType = new ArrayList<String>(); 
    conEmailValue = new ArrayList<String>(); 

    this.conName = mConName; 
    this.conPhoneType = mConPhoneType; 
    this.conPhoneValue = mConPhoneValue; 
    this.conEmailType = mConEmailType; 
    this.conEmailValue = mConEmailValue; 
} 

public String getConName() { 
    /*Log.e("InAdp conName", this.conName);*/ 
    return conName; 
} 

public void setConName(String conName) { 
    this.conName = conName; 
} 

public List<String> getConPhoneType() { 
    /*for(int i = 0; i < this.conPhoneType.size(); i++){ 
     Log.e("InAdp conPhone", this.conPhoneType.get(i)*//* + ": " + this.conPhoneValue.get(i)*//*); 
    }*/ 
    return conPhoneType; 
} 

public void setConPhoneType(List<String> conPhoneType) { 
    this.conPhoneType = conPhoneType; 
} 

public List<String> getConPhoneValue() { 
    return conPhoneValue; 
} 

public void setConPhoneValue(List<String> conPhoneValue) { 
    this.conPhoneValue = conPhoneValue; 
} 

public List<String> getConEmailType() { 
    /*for(int i = 0; i < this.conEmailType.size(); i++){ 
     Log.e("InAdp conEmail", this.conEmailType.get(i)*//* + ": " + this.conEmailValue.get(i)*//*); 
    }*/ 
    return conEmailType; 
} 

public void setConEmailType(List<String> conEmailType) { 
    this.conEmailType = conEmailType; 
} 

public List<String> getConEmailValue() { 
    return conEmailValue; 
} 

public void setConEmailValue(List<String> conEmailValue) { 
    this.conEmailValue = conEmailValue; 
} 

} 

ответ

2

Попробуйте ниже модификацию , Невозможно выполнить и проверить код, поскольку предоставленный код недостаточно для компиляции и запуска. В ContactCard.java

String conName; 
List<String> conPhoneType; 
List<String> conPhoneValue; 
List<String> conEmailType; 
List<String> conEmailValue; 
List<ContactCardModel> listConCard = new ArrayList<ContactCardModel>(); 

int i = 1; 

    for (AddressBookContact addressBookContact : list) { 

     conName = addressBookContact.name; 

     conPhoneType = new ArrayList<String>(); 
     conPhoneValue = new ArrayList<String>(); 
     if(addressBookContact.phones != null) { 

      for (int x = 0; x < addressBookContact.phones.size(); x++) { 
       int type = (int) addressBookContact.phones.keyAt(x); 
       String typeName = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(addressBookContact.res, type, ""); 
       String phValue = addressBookContact.phones.valueAt(x); 

       conPhoneType.add(typeName); 
       conPhoneValue.add(phValue); 
      } 
     } 

     conEmailType = new ArrayList<String>(); 
     conEmailValue = new ArrayList<String>(); 
     if(addressBookContact.emails != null){ 

      for(int x = 0; x < addressBookContact.emails.size(); x++){ 
       int type = (int) addressBookContact.emails.keyAt(x); 
       String typeName = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(addressBookContact.res, type, ""); 
       String emailValue = addressBookContact.emails.valueAt(x); 

       conEmailType.add(typeName); 
       conEmailValue.add(emailValue); 
      } 
     } 

     listConCard.add(new ContactCardModel(conName, conPhoneType, conPhoneValue, conEmailType, conEmailValue)); 

    } 

В конструкторе ContactCardModel.java

public ContactCardModel(String mConName, List<String> mConPhoneType, List<String> mConPhoneValue, 
        List<String> mConEmailType, List<String> mConEmailValue){ 

this.conName = mConName; 
this.conPhoneType = mConPhoneType; 
this.conPhoneValue = mConPhoneValue; 
this.conEmailType = mConEmailType; 
this.conEmailValue = mConEmailValue; 

}

+0

ок. позвольте мне запустить код –

+0

Спасибо @kishor. теперь я получаю ожидаемый результат. –

+0

Всегда приветствуем !!! –

Смежные вопросы