ListView ImageView加载相同的图片



我的ListViewAdapter有一个大问题。

我的ListView同时显示2个条目。每个条目都应从我的服务器中获得不同的图片。第一个和第二个条目正常工作,但是如果我向下滚动,下一个条目将具有相同的图片。

我的代码看起来像这样:

if (viewHolder.imgPic != null) {
    String strUrl = mainUrl+list.get(position).getUrl();
    new ImageDownload(viewHolder.imgPic).execute(strUrl);
}

我正在检查视图,只是这样做,如果是空的。

有人可以帮我吗?谢谢

从您的问题中,我可以假设您对ListView回收机械设备不了解

基本上,请查看不再可见的(用户将其从视线滚动后)被回收为显示需要显示的新项目。这就是getView()方法的convertView参数...

可能您看到了相同的图像,因为回收视图与相同的图像保持。

还存在异步任务(您的Imagedownload类)的问题,可以在启动请求的原始项目已被回收时执行。

我建议您尽可能地"挖"北斗七星,以了解有关ListView的所有信息 - 这是最复杂,最重要的UI组件之一。阅读我链接的帖子是一个不错的开始。

此视频也非常重要:

http://www.youtube.com/watch?v=wdbm6wveo70

这是我的getView:

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = null;
        if(rowResourceId!=R.layout.search_empty_list) {
            if (convertView == null) {
                LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = inflator.inflate(rowResourceId, null);
                final ViewHolder viewHolder = new ViewHolder();
                viewHolder.textName = (TextView) view.findViewById(R.id.textView1);
                viewHolder.imgPic = (ImageView) view.findViewById(R.id.imgPic);         
                if (viewHolder.imgPic != null) {
                    String strUrl = mainUrl+list.get(position).getUrl();
                    new ImageDownload(viewHolder.imgPic).execute(strUrl);
                }
                view.setTag(viewHolder);
            } else {
                view = convertView;
            }
            ViewHolder holder = (ViewHolder) view.getTag();
            holder.textName.setText(list.get(position).getName());

        } else {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(rowResourceId, parent, false);
            TextView textView1 = (TextView) view.findViewById(R.id.textView1);
            textView1.setText(list.get(0).getName());
        }
        return view;
    }

最新更新