2010-11-04 6 views
0

У меня есть ListView, который я заполняю именами и изображениями (если таковые существуют) для каждого контакта на моем телефоне. Это нормально работает, когда приложение изначально загружается, но как только я начну прокручивать ListView, изображения, которые изначально были исправлены, исчезли. Единственное, что я могу придумать, это то, что ресурсы используются, а затем уничтожаются, когда они прокручиваются с экрана, но мне не повезло узнать, как их сохранить.Android ListView Исчезающие изображения

Я просматриваю все мои контакты и сохраняю имя и используя ContactsContract.Contacts.openContactPhotoInputStream (context.getContentResolver(), photoUri); для получения InputStream изображения контакта. Затем в моем настраиваемом массиве ArrayAdapter я использую Drawable.createFromStream(), чтобы установить образ для ImageView моего элемента ListView.

Спасибо!

Edit: В соответствии с просьбой, вот мой метод 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; 
} 
+0

Не могли бы вы включить в свой пост код вашего адаптера getView()? –

ответ

0

После того, как вы прочитали из InputStream, вы достигнете своей цели и не может перечитать его, не требуя нового InputStream от поставщика.

+0

Спасибо, я понял это сегодня днем! Я читал InputStream в растровое изображение, и он отлично работал. – Jay

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