ListView活动时,每个items里图片为什么会复用被遗弃的view的图片,怎么解决?,

ListView活动时,每个items里图片为什么会复用被遗弃的view的图片,怎么解

解决方法
出现错乱的原因是异步加载及对象被复用造成的,如果每次getview能给对象一个标识,在异步加载完成时比较标识与当前的item的标识是否是一致的,一致的则显示,否则加载你需要显示的图片或默认图片。
代码中加上
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.list_item,null);
holder = new ViewHolder();
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}

if(!imageurl.equal(holder.imageview.getTag())//如果标识不同,设置成你想要的图片,或默认图片,否则不需要处理
{
holder.imageview.setTag(imageurl);//imageurl 你需要加载的网络图片或其实来源的路径;
//imageview.setimageDrawable();//
}

return convertView;
}

重写Adpater的getView,根据ListItem的Id设定ImageView显示不同的图片

这是listview优化结果,上方移除视线的view,会出现在下方,循环利用,所以你要用ViewHolder,来实现,不要每次都创建view,getview中每次重新加载图片

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.select_date_item, parent, false);
holder=new ViewHolder();
holder.showSelectDateYear = (TextView) convertView.findViewById(R.id.showSelectDateYear);
holder.showSelectDateCountTimer = (TextView)convertView.findViewById(R.id.showSelectDateCountTimer);
holder.showSelectDateChinesrYear = (TextView)convertView.findViewById(R.id.showSelectDateChinesrYear);
convertView.setTag(holder);
}else {
holder=(ViewHolder) convertView.getTag();
}

        holder.showSelectDateYear .setText(list.get(position).toString());

    holder.showSelectDateCountTimer .setText(((getGapCount(date_start,date_end))+"")+"天后");

   holder.showSelectDateCountTimer .setText(chineseDay);

    return convertView;
}

}

static class ViewHolder{
TextView showSelectDateYear;
TextView showSelectDateChinesrYear;
TextView showSelectDateCountTimer;
}

例子都贴出来了 使用viewhold

这是listview优化问题,你可以试试RecyclerView替代ListView,现在它比listView好用

不仅要对文字要重新赋值,图片也是要重新赋值的。

给imageview设置一个tag,添加图片的时候根据tag做判断

图片加载的话,建议使用github上的开源项目Universal-Image-Loader,能够有效的解决图片闪跳的问题。

github地址:https://github.com/nostra13/Android-Universal-Image-Loader