listview显示图片缩略图的问题

臭屁成 2016-04-28 11:17:31
Listview中包含许多不同格式的文件,对图片格式生成缩略图显示。那么我的问题来了:如果图片过多,在下滑或者上滑的时候,其他格式的文件显示的图标会乱掉,会显示成图片缩略图的样子,打断点调试发现非图片格式文件走的是正确的显示方式,但是实际显示出来的确是某个图片缩略图。
附上显示方法:

final ViewHolderCd holdercd;
if (convertView == null) {
convertView = View.inflate(ct, R.layout.newlist2, null);
holdercd= new ViewHolderCd();
holdercd.rl_gx = (LinearLayout) convertView
.findViewById(R.id.rl_gx);
holdercd.tv_time = (TextView) convertView.findViewById(R.id.tv_pc2);
holdercd.im = (ImageView) convertView.findViewById(R.id.im_list2);
holdercd.cb = (CheckBox) convertView.findViewById(R.id.cb_gxxz);
convertView.setTag(holdercd);
}else{
holdercd=(ViewHolderCd)convertView.getTag();
}
}
FILE_TYPE f_type = Mime_type.get_file_type(path);//将文件格式归类

if (f_type == FILE_TYPE.IMG_FILE) {//图片格式

setImage(holdercd,fileItemList.get(position).getPath());

} else if (f_type == FILE_TYPE.TEXT_FILE) {//文本格式
holdercd.im.setBackgroundResource(R.drawable.ic_txt);
} else if (f_type == FILE_TYPE.AUDIO_FILE) {//音乐格式
holdercd.im.setBackgroundResource(R.drawable.ic_music);
} else if (f_type == FILE_TYPE.MEDIA_FILE) {//视频格式格式

holdercd.im.setBackgroundResource(R.drawable.ic_video);
} else {
holdercd.im.setBackgroundResource(R.drawable.ic_weizhi);
}
private void setImage(final ViewHolderCd holdercd, String path) {


ImageLoader.loadDrawable(path, 60, 60, new ImageCallBack() {


@Override

public void imageLoaded(Bitmap drawable) {


holdercd.im.setImageBitmap(drawable);

}

}, new Handler(){


@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

Bitmap bitmap= (Bitmap) msg.obj;

holdercd.im.setImageBitmap(bitmap);

}

});

}

...全文
349 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
哎,真难 2016-04-28
  • 打赏
  • 举报
回复
看下第三方框架imageloader
臭屁成 2016-04-28
  • 打赏
  • 举报
回复
大神呢··············不要沉
臭屁成 2016-04-28
  • 打赏
  • 举报
回复
图标乱码
正确的图标显示
有图片格式文件,生成缩略图之后就会出现乱码,来回滑动listview,乱码生成的图标会越来越多,请高手帮忙分析一下,谢谢
臭屁成 2016-04-28
  • 打赏
  • 举报
回复
原因原来是setImageBitmap和setBackgroundResource冲突了 因为我缩略图用的是bitmap,其他用的是setbackground,,在滑动listview的时候,有时候会覆盖在setbackground的上面,所以造成图标乱码的现象 我一直把问题放在item重复使用的问题。。。试了下都改成setImageBitmap,结果好了。。好蛋疼的问题
臭屁成 2016-04-28
  • 打赏
  • 举报
回复
引用 3 楼 heaimnmn 的回复:
看下第三方框架imageloader
public class ImageLoader { private ExecutorService executorService = Executors.newFixedThreadPool(20); private ImageCallBack callBack; public Bitmap loadDrawable(final String imageUrl, final int width, final int height, final ImageCallBack callBack, final Handler handler) { executorService.submit(new Thread() { public void run() { try { final Bitmap drawable = loadImageFromUrl(imageUrl,width, height); Message msg= new Message(); msg.obj= drawable; handler.sendMessage(msg); } catch (Exception e) { throw new RuntimeException(e); } } }); return null; } protected Bitmap loadImageFromUrl(String path, int width, int height) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; // 获取这个图片的宽和高,注意此处的bitmap为null bitmap = BitmapFactory.decodeFile(path, options); options.inJustDecodeBounds = false; // 设为 false // 计算缩放比 int h = options.outHeight; int w = options.outWidth; int beWidth = w / width; int beHeight = h / height; int be = 1; if (beWidth < beHeight) { be = beWidth; } else { be = beHeight; } if (be <= 0) { be = 1; } options.inSampleSize = be; // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false bitmap = BitmapFactory.decodeFile(path, options); // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象 bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } public interface ImageCallBack { public void imageLoaded(final Bitmap drawable); } }

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧