You are only putting data in the TextView
widgets when they are first created. You need to move these four lines:
TextView label = (TextView)view.findViewById(R.id.groups_item_title);
label.setText(mContacts.get(position).getName());
label = (TextView)view.findViewById(R.id.groups_item_subtitle);
label.setText(mContacts.get(position).getNumber());
to be after the if
/else
block and before the method return, so you update the TextView
widgets whether you are recycling the row or creating a fresh one.