Search code examples
androidlistviewrecycle

List view cell recycling issue


In my case list view on scroll showing duplicate cells. Not working properly. this is my code in getView()

    if(convertView == null)
        {
            LayoutInflater infalInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.contact_cell, null);
        }

        try {
            if(contacts.getContacts().get(position).getPhone() != null) {
                ImageView contactIcon = (ImageView) convertView.findViewById(R.id.pic);
                TextView contactName = (TextView) convertView.findViewById(R.id.name);
                contactName.setText(contacts.getContacts().get(position).getDisplayName());
                contactIcon.setImageBitmap(contacts.getContacts().get(position).getThumbNail());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return convertView;

Solution

  • Add this to yuor getView() method

    if(contacts.getContacts().get(position).getPhone() != null) {
        ImageView contactIcon = (ImageView) convertView.findViewById(R.id.pic);
        TextView contactName = (TextView) convertView.findViewById(R.id.name);
        contactName.setText(contacts.getContacts().get(position).getDisplayName());
        contactIcon.setImageBitmap(contacts.getContacts().get(position).getThumbNail());
    }else{
        ImageView contactIcon = (ImageView) convertView.findViewById(R.id.pic);
        TextView contactName = (TextView) convertView.findViewById(R.id.name);
        contactName.setText("");
        contactIcon.setImageBitmap(null);
    }
    

    It happens when getPhone() returns null and convertView does not update.