android listView 自定义适配器getView()方法中,数据错位显示

有这么一个问题,在listView的自定义适配器中,要将传进得list.get(position) 的当前对象的一个值Url, 通过网络请求下载之后,在通过ViewHoder.ImageView.setImage() 赋值显示,现在的情况就是数据错位显示,
以下时adapter的getView()方法的部分代码
final String headUrl = teacherResponseList.get(position).getHeadUrl();
new Thread(new Runnable() {
@Override
public void run() {
bitmap = Utils.getImageFromServer(headUrl);
bitmap = Utils.getCirCleBitmap(bitmap);
}
}).start();

            viewHodler.teacher_iv.setImageBitmap(bitmap);
            viewHodler.teacher_name_tv.setText(teacherResponseList.get(position).getName());
            viewHodler.teacher_account.setText(teacherResponseList.get(position).getSpecialtie



                            求解决思路

是滑动导致的错位吗 还是初始化就错位

你试着调一下item的view,控制一下图片大小

  1. 给ImageView 设置一个 tag viewHodler.teacher_iv.setTag(headUrl); 2.通过 tag 来防止图片错位 viewHodler.teacher_iv .getTag().equals(headUrl))

网络请求数据,是一个较慢的动作,不适合放到getView里面。
应该是先完成网络请求,准备好了数据,然后调用notifyDataSetChanged()更新界面

给显示的图片ImageView在适配器的getView()方法设置一个Tag.就可以了

1.用viewHolder
2.异步下载图片显示。

图片的加载是比较慢的,你需要用异步