图像在imageloader中重复

时间:2013-06-13 09:38:12

标签: android imageview universal-image-loader

我在imageloader中使用getView(),如下所示。但是当ic_launcher为空时,我无法将picturepath作为默认图像。我不知道出了什么问题。但是当我调试时,我能够发现当picturepath为空时它会转到其他部分。但仍然以某种方式加载了现有的imagepaths图像。这也只发生在列表的第一行。有人可以帮我解决这个问题吗?

public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder vh = null;
            if (convertView == null)
            {
                convertView = View.inflate(context, layoutResourceId, null);
                vh = new ViewHolder();
                vh.nameTextView = (TextView) convertView.findViewById(R.id.name);

                vh.imageView = (ImageView) convertView.findViewById(R.id.list_image);

                convertView.setTag(vh);
            }else{
                vh = (ViewHolder)convertView.getTag();
            }

            String picturePath = detailsUrl.get(position);

            vh.nameTextView.setText("Name: "+name);
            if(picturePath !=null && !picturePath.equals(""))
            {
            imageLoader.displayImage("file://"+picturePath , vh.imageView);
            }
            else
            {
                     // I am able to see here the control flows when the imagepath is empty
                vh.imageView.setImageResource(R.drawable.ic_launcher);  
            }


        return (row);       
        }

2 个答案:

答案 0 :(得分:1)

我认为你不需要设置if else语句。 设置“DisplayImageOptions”如下

DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.ic_launcher)
            .showImageForEmptyUri(R.drawable.ic_launcher)
            .showImageOnFail(R.drawable.ic_launcher)
            .bitmapConfig(Bitmap.Config.RGB_565) //and other options you may need
            .build();

然后在此声明之后

  

vh.nameTextView.setText(“名称:”+名称);

把这段代码

ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.displayImage(image_poster_url, vh.imageView, options);

如果url为null或空url,则会自动显示ic_launcher。 如果静止图像重​​复,则在.build();

之前将此块添加到DisplayImageOptions
.resetViewBeforeLoading()

答案 1 :(得分:1)

您应该使用DisplayImageOptions尝试.resetViewBeforeLoading()。

    options = new DisplayImageOptions.Builder()
            .resetViewBeforeLoading()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .delayBeforeLoading(1000)
            .displayer(new SimpleBitmapDisplayer())
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();