ListView在android中滚动图像

时间:2012-12-03 13:15:40

标签: android image listview scroll

在我的应用程序中,图像是从服务器加载的。我用图像加载器进行图像加载。 但问题是,当图像加载时,如果我滚动列表视图,图像被洗牌,图像的顺序是错误的。但是在加载完成后,所有图像都处于正确位置。如果我现在滚动图像没有洗牌,它们处于正确的位置。 我在listview setTag()中使用了getTag()getView()。 请帮我解决在列表视图中加载图像时图像混洗的问题。 这是我的getView()

代码
public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View rowView = convertView;
        ProgressBar progress;
        ImageView image;
        ViewHolder view_holder = null;
        String m_AllImages=m_BaseImageAll.get(position);

        try {

            if (rowView == null) {
                rowView = inflater.inflate(R.layout.photo_show_sub,
                        null);

                view_holder = new ViewHolder();
                view_holder.progress = (ProgressBar) rowView.findViewById(R.id.photoGalProgress);
                view_holder.image = (ImageView) rowView.findViewById(R.id.image);

            }
            else
            {   

                view_holder = (ViewHolder) rowView.getTag();

            }
            imageLoader.displayImage(m_AllImages,
                    activity, view_holder.image, view_holder.progress);

        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return rowView;
    }

2 个答案:

答案 0 :(得分:3)

在您的代码::

中添加此行
  holder.image.setTag(m_AllImages.get(position));
 imageLoader.displayImage(m_AllImages, activity, view_holder.image, view_holder.progress);

答案 1 :(得分:2)

实际上并不是因为图像被洗牌,一些图像比以前更快下载,没有图像的ImageView被包装掉,加载的图像首先显示图像。所以它似乎最初被洗牌,除非所有图像都被下载并且它实际上没有被洗牌。

用虚拟图像检查,比如说

image.setImageBitmap(R.Drawable.ic_launcher);