Итак, у меня есть эта программа, которая захватывает RSS-канал на http://www.muttville.org/mutts/feed и отображает список доступных собак, в основном заполняя каждый элемент в ListView с изображением собаки слева и заголовкомо собаке справа.
Мое приложение выполняется, захватывает и анализирует XML-фид в порядке.onCreate, он сохраняет URL изображения в виде строки в каждом элементе.У меня есть структура данных RSSFeed, которая в основном представляет собой массив объектов RSSItem.Проблема состоит в том, чтобы выяснить, как обновлять изображения асинхронно.
У меня есть imageDownloader, который я на самом деле получил из блога разработчика Android в Google, который обновляет изображения и сохраняет их, но предварительная загрузка очень длинная.Я предпочел бы начать отображать элементы немедленно и обновлять изображения по мере их получения.Досадно, что просмотр списка вначале тоже очень не отвечает, вызывая мой 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;
}
}