J'ai un ListView que je remplis avec des noms et des images (le cas échéant) pour chaque contact sur mon téléphone. Cela fonctionne correctement lorsque l'application se charge initialement, mais une fois que je commence à faire défiler la liste, les images qui étaient correctes à l'origine disparaissent. La seule chose à laquelle je peux penser est que les ressources sont utilisées et ensuite détruites une fois qu'elles défilent à l'écran, mais je n'ai pas de chance de savoir comment les garder.Android ListView Vanishing Images
Je parcourt tous mes contacts et stocke le nom et utilise ContactsContract.Contacts.openContactPhotoInputStream (context.getContentResolver(), photoUri); pour extraire un InputStream de l'image du contact. Ensuite, dans mon ArrayAdapter personnalisé, j'utilise Drawable.createFromStream() pour définir l'image pour l'ImageView de mon élément ListView.
Merci!
Edit: Comme demandé, voici ma méthode getView
public View getView(int position, View convertView, ViewGroup parent)
{
LinearLayout contact_view;
//Get the current alert object
ContactInfo contact = getItem(position);
//Inflate the view
if(convertView==null)
{
contact_view = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, contact_view, true);
}
else
{
contact_view = (LinearLayout) convertView;
}
//Get the fields to populate from the listitem.xml file
TextView contact_name = (TextView)contact_view.findViewById(R.id.contact_name);
ImageView contact_image =(ImageView)contact_view.findViewById(R.id.contact_image);
//Assign the appropriate data from our alert object above
contact_name.setText(contact.get_name());
if(contact.get_contact_image() != null) {
contact_image.setImageDrawable(Drawable.createFromStream(contact.get_contact_image(), "src"));
} else {
contact_image.setImageResource(R.drawable.dummy_image);
}
return contact_view;
}
Pourriez-vous inclure dans votre message le code de votre méthode d'adaptateur getView()? –