我在我的应用程序中使用listview和图像。但每当我 滚动列表首先显示错误的图像然后正确显示 图像正在显示。我不知道为什么会这样发生。我 认为已经加载的图像正在显示,直到设置位置。 这是我的适配器类,请在我出错的地方帮助我
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private Activity context;
ArrayList<String> namear,msgar,idar,profimage,postimage,commentsnum,objectid,urlString;
ImageLoader imageLoader;
Bitmap[] bitdata;
public MySimpleArrayAdapter(Activity c,int i,ArrayList<String> postpic, ArrayList<String> names,ArrayList<String> msg,ArrayList<String> id,ArrayList<String> proimg,Bitmap[] bit,ArrayList<String> comment,ArrayList<String> objid,ArrayList<String> web) {
super(c, i, names);
Log.e("adapter","adap");
this.context = c;
this.namear = names;
this.msgar = msg;
this.idar = id;
this.profimage=proimg;
this.postimage=postpic;
this.bitdata=bit;
this.commentsnum=comment;
this.objectid=objid;
this.urlString=web;
this.imageLoader = new ImageLoader(context);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rowView=convertView;
ViewHolder holder = new ViewHolder();
if(convertView == null) {
LayoutInflater inflator = getLayoutInflater();
rowView = inflator.inflate(R.layout.walldata, null);
holder.name1 = (TextView) rowView.findViewById(R.id.name);
holder.message1 = (TextView) rowView.findViewById(R.id.msg);
holder.profimg= (ImageView) rowView.findViewById(R.id.profile_pic);
holder.postimg= (ImageView) rowView.findViewById(R.id.picpost);
holder.comments = (TextView) rowView.findViewById(R.id.comment);
rowView.setTag(holder);
Log.e("user",idar.get(position));
}
else
{
holder = (ViewHolder) rowView.getTag();
}
Log.e("adapter","adap");
holder.name1.setText(namear.get(position));
if(msgar.get(position)!=""){
holder.message1.setText(msgar.get(position));
}
else
{
holder.message1.setVisibility(View.GONE);
}
if(!postimage.get(position).equals(""))
{try{
imageLoader.DisplayImage(postimage.get(position).replace(" ", "%20"), holder.postimg) ;
}
catch(Exception e){
e.printStackTrace();
}
}
else
{
holder.postimg.setVisibility(View.GONE);
}
try{
imageLoader.DisplayImage(profimage.get(position).replace(" ", "%20"), holder.profimg) ;
}
catch(Exception e){
e.printStackTrace();
}
holder.comments.setText(commentsnum.get(position)+"\t"+"Comments");
holder.comments.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent myintent=new Intent(Wall.this,Comments.class);
myintent.putExtra("name", namear.get(position));
myintent.putExtra("profimg", profimage.get(position));
myintent.putExtra("message", msgar.get(position));
myintent.putExtra("postpic", postimage.get(position));
myintent.putExtra("objectid", objectid.get(position));
myintent.putExtra("commentsnum",commentsnum.get(position));
myintent.putExtra("webservice", urlString.get(position));
startActivity(myintent);
}
});
return rowView;
}
}
public class ViewHolder{
TextView name1, message1,comments;
ImageView profimg,postimg;
}
答案 0 :(得分:0)
确保在getView方法中尽早将ImageView中的图像设置为null。由于ListView正在重复使用列表项,因此将显示旧列表项,直到设置了新列表项为止。