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个回答

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

你可以试试Picasso

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问