Android-галерея асинхронная загрузка изображений - PullRequest
2 голосов
/ 28 февраля 2011

Можно ли использовать асинхронный загрузчик изображений из этого проекта http://open -pim.com / tmp / LazyList.zip с виджетом Галерея? Я попробовал:

     public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView=new ImageView(activity.getBaseContext());

    imageLoader.DisplayImage(urlList.get(position), activity, imageView);

    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
    imageView.setLayoutParams(new Gallery.LayoutParams(150, 150));

    return imageView;
}

но это не имело никакого эффекта.

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Вы должны соответствующим образом пометить свои представления изображений, чтобы асинхронная задача могла обновлять их после получения изображений из кэша или сети:

imageLoader.DisplayImage(urlList.get(position), activity, imageView);
imageView.setTag(urlList.get(position));
1 голос
/ 02 марта 2012

Приведенный ниже код отлично работает для моего проекта.

Используйте ViewHolder вместо нового ImageView (Context c) каждый раз, если у вас есть 2 или более представления в держателе, просто код, как показано ниже (использует findViewById ()):

holder.iv = (ImageView) convertView.findViewById (R.id.iv);

holder.tv = (TextView) convertView.findViewById (R.id.tv);

И вам лучше надуть макет в xml и кодировать стили представлений. Не кодируйте в getView (), так как он чувствителен ко времени.

Код, модифицированный из демоверсии LazyList, надеюсь, это сработает для вас. Наилучшие пожелания!

static class ViewHolder{
    ImageView iv;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View holder = null;
    if(convertView==null){
        convertView = inflater.inflate(R.layout.item, null);
        holder = new ViewHolder();
        holder.iv = (ImageView) convertView;
        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
    }

    imageLoader.DisplayImage(data[position], activity, holder.iv);
    return convertView;
}
0 голосов
/ 02 сентября 2011

imageLoader.DisplayImage (urlList.get (position), активность, imageView); imageView.setTag (urlList.get (положение));

Этот код работает нормально. Можем ли мы использовать его для просмотра изображений внутри RemoteViews.

...