2010-08-17 2 views
0

Итак, у меня есть эта программа, которая захватывает RSS-канал на http://www.muttville.org/mutts/feed и отображает список доступных собак, в основном заполняя каждый элемент в ListView изображением собаки слева и заголовок о собаке справа.Обновление динамических изображений из URL с помощью Android

Мое приложение выполняет и захватывает и разбирает фид XML-фида. onCreate, он сохраняет URL-адрес изображения в виде строки в каждом элементе. У меня есть структура данных RSSFeed, которая в основном представляет собой массив объектов RSSItem. Проблема заключается в том, как обновлять изображения асинхронно.

У меня есть imageDownloader, который я действительно получил из блога Android dev в Google, который обновляет изображения и сохраняет их, но предварительная нагрузка очень длинная. Я предпочел бы начать отображение предметов сразу и обновлять изображения по мере их получения. Раздражающе, свиток listview действительно безответственно и в первую очередь, называя мой imageDownloader снова получать элементы. Есть ли способ заставить ImageViews просто захватить указатель на объект ImageView в RSSItem, а затем просто обновить его?

Я довольно новичок в разработке Android, так что есть хороший шанс, что я не понимаю, что-то основное. Вот мой адаптер код:

частный класс FeedItemAdapter расширяет ArrayAdapter {

private List<RSSItem> items; 

    public FeedItemAdapter(Context context, int textViewResourceId, List<RSSItem> items) { 
     super(context, textViewResourceId, items); 
      this.items = items; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater vi = 
        (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.displayitem, null); 
      } 

      RSSItem o = items.get(position); 
      if (o != null) { 
        ImageView tt = (ImageView) v.findViewById(R.id.leftimage); 
        TextView bt = (TextView) v.findViewById(R.id.righttext); 
        if (tt != null) { 
         //get image from url string 
         imageDownloader.download(o.getImageString(), tt); 
        } 
        if(bt != null){ 
          bt.setText(feed.getItem(position).getTitle()); 
        } 
      } 
      return v; 
    } 


} 

ответ

0

Создайте новый класс, который наследует ImageView, показать «отложенный» изображение по умолчанию, и есть функция, которая начинает загрузку из сети в другой поток. Когда все будет готово, обновите изображение.