码农版吴磊 2015-11-03 12:32 采纳率: 0%
浏览 2704

ListView需要用imageloader加载大量网络图片滑动卡顿

需求:类似QQ空间动态功能,每个Item加载头像跟图片还有一些文字。
使用的是UIL来加载图片。
问题:在滑动listview的时候会卡顿,然后加载过的图片再次出现的时候又会重新加载。并不能实现首次下载第二次的时候从内存中加载。PS:每张图片大小在20K以内、网络状态良好。
已尝试方法:优化ImageLoaderConfiguration、设置ListView.setOnScrollListener(new PauseOnScrollListener(imageLoader, true, true));、把UIL更新到最新的1.9.4。
我在网上查了很多,最多方法是给ImageView设置Tag,在加载完成时判断。if(imageUri.equals(holder.ivIcon.getTag())){
holder.ivIcon.setImageBitmap(loadedImage);
}
但是我用的是imageloader.displayImage。
另外,如果给imageview加tag,然后用imageloader.loadimage()来加载图片。在onLoadingComplete()中是不能判断imageview.tag是否等于imageUri的。因为我是在adpter中,用的holder,如果要可以用,就得吧holder定义为final,然而在holder = new ViewHolder();的时候就会让holder移除holder,互相矛盾。
求大神指导。万分感谢!

Adapter的getView()代码如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
IPetUserEvent userevent = (IPetUserEvent) getItem(position);
IPetUserEventDao usereventdao=new IPetUserEventImpl();
IPetUser user=usereventdao.getUserById(userevent.getUserid());
String userName=user.getiName();
String userHeadPic=user.getiImg();
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_userevent,
null);
holder = new ViewHolder();
holder.imgUserHeadPic=(ImageView) convertView.findViewById(R.id.img_item_userevent_head);
holder.imgPic = (ImageView) convertView.findViewById(R.id.iv_item_userevent_eventpic);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_item_userevent_eventname);
holder.tvTime = (TextView) convertView.findViewById(R.id.tv_item_userevent_eventtime);
holder.tvUserName=(TextView) convertView.findViewById(R.id.tv_item_userevent_username);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitle.setText(userevent.getEventname());
holder.tvTime.setText("活动时间:"+userevent.getEventtime());
holder.tvUserName.setText(userName);
String url= HttpUtil.BASE_URL+"uploadfile/userevent/"+userevent.getEventpic();
String url1= HttpUtil.BASE_URL+"uploadfile/userImage/"+userHeadPic;
imageLoader.displayImage(url1, holder.imgUserHeadPic, options, animateFirstListener);
imageLoader.displayImage(url, holder.imgPic, options, animateFirstListener);//

return convertView;
}

  • 写回答

2条回答

  • yumusam 2015-11-04 01:42
    关注

    顶起,赚个积分先,学习学习

    评论

报告相同问题?

悬赏问题

  • ¥15 vue2(标签-chrome|关键词-浏览器兼容)
  • ¥15 python网络流自动生成系统 医学领域
  • ¥15 sql查询仓库里都有什么
  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器