我在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);
}
答案 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();