I'm trying to merge 2 listviews into one using an adapter, the "ContatosTelefoneModel" is working fine, it is showing all the telephones in the list, the problem is the emails, it is showing only the last value of the array, I'll add some images to explain it better:
I have an array with 4 emails, steve1, steve2, steve3, and steve4, and I'm only getting steve4, I very, very noob to android development, I'd like to Know how to show the emails array properly.
public class TelefoneListAdapter extends BaseAdapter {
private ArrayList<ContatosTelefoneModel> listD;
private ArrayList<ContatosEmailModel> email;
private LayoutInflater layoutInflater;
private Context mContext;
public TelefoneListAdapter(Context context, ArrayList<ContatosTelefoneModel> listData, ArrayList<ContatosEmailModel> emails) {
this.listD = listData;
this.email = emails;
layoutInflater = LayoutInflater.from(context);
mContext = context;
}
@Override
public int getCount() {
return listD.size();
}
@Override
public Object getItem(int position) {
return listD.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.tel_row_layout, null);
holder = new ViewHolder();
holder.headlineView = (TextView) convertView.findViewById(R.id.numero);
holder.reportedDateView = (TextView) convertView.findViewById(R.id.tipo);
holder.emailView = (TextView) convertView.findViewById(R.id.email);
holder.IdTelefone = (TextView) convertView.findViewById(R.id.TelefoneID);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ContatosTelefoneModel newsItem = listD.get(position);
holder.headlineView.setText(newsItem.getNumero());
holder.reportedDateView.setText(newsItem.getTipo());
for(int x=0; x<email.size(); x++) {
ContatosEmailModel mContatosEmailModel = email.get(x);
holder.emailView.setText(mContatosEmailModel.getEmail());
}
return convertView;
}
static class ViewHolder {
TextView headlineView;
TextView reportedDateView;
TextView emailView;
TextView IdTelefone;
TextView ContatoCliente;
}
}
Models:
public class ContatosEmailModel implements Serializable {
private int id;
private int id_rm;
private String email;
private String tipo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getId_rm() {
return id_rm;
}
public void setId_rm(int id_rm) {
this.id_rm = id_rm;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
@Override
public String toString() {
return "ContatosEmailModel{" +
"id=" + id +
", id_rm=" + id_rm +
", email='" + email + '\'' +
", tipo='" + tipo + '\'' +
'}';
}
}
public class ContatosTelefoneModel implements Serializable{
private int id;
private int id_rm;
private String numero;
private String tipo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getId_rm() {
return id_rm;
}
public void setId_rm(int id_rm) {
this.id_rm = id_rm;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
@Override
public String toString() {
return "ContatosTelefoneModel{" +
"id=" + id +
", id_rm=" + id_rm +
", numero='" + numero + '\'' +
", tipo='" + tipo + '\'' +
'}';
}
}
Why are you using for loop here???
for(int x=0; x<email.size(); x++) { ContatosEmailModel mContatosEmailModel = email.get(x); holder.emailView.setText(mContatosEmailModel.getEmail()); }
Just do same as you are doing for headline view and reportedDateView
Change your this code :
holder.emailView.setText(this.email.get(position).getEmail());
for(int x=0; x<email.size(); x++) {
ContatosEmailModel mContatosEmailModel = email.get(x);
holder.emailView.setText(mContatosEmailModel.getEmail());
}
to this :
holder.emailView.setText(mContatosEmailModel.getEmail());