1

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

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);       
        }
4

2 回答 2

2

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

    options = new DisplayImageOptions.Builder()
            .resetViewBeforeLoading()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .delayBeforeLoading(1000)
            .displayer(new SimpleBitmapDisplayer())
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();
于 2015-01-05T03:21:50.023 回答
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()
于 2013-06-19T13:30:57.670 回答