在项目中,gridview需要展示很多的大图片,故在adapter中把相应的图片设置了宽高。
但是,gridview在测量item大小时会复用第一个convertView。
这导致了第一个item的图片有时候加载不出来。
解决方法:
在设置图片的时候,对position为0的时候,另做处理(不设置宽高)。同时,限定convertView的大小。
代码:
if(position == 0){
InputStream is=null;
try {
is = new FileInputStream(new File(imageUrl));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 3;
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
Drawable drawable=new BitmapDrawable(btp);
holder.ProductPhoto.setImageDrawable(drawable);
}else{
Drawable cachedImage = asyncImageLoader.loadDrawable(imageUrl,w,h,new ImageCallback() {
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
ImageView imageViewByTag = (ImageView) gridView.findViewWithTag(imageUrl);
if (imageViewByTag != null) {
imageViewByTag.setImageDrawable(imageDrawable);
}
}
});
if (cachedImage == null) {
holder.ProductPhoto.setImageResource(R.drawable.loading_06);
}else{
holder.ProductPhoto.setImageDrawable(cachedImage);
}
}
convertView.setLayoutParams(new GridView.LayoutParams(w,h+50));