我的ListViewAdapter有一个大问题。
我的ListView同时显示2个条目。每个条目都应从我的服务器中获得不同的图片。第一个和第二个条目正常工作,但是如果我向下滚动,下一个条目将具有相同的图片。
我的代码看起来像这样:
if (viewHolder.imgPic != null) {
String strUrl = mainUrl+list.get(position).getUrl();
new ImageDownload(viewHolder.imgPic).execute(strUrl);
}
我正在检查视图,只是这样做,如果是空的。
有人可以帮我吗?谢谢
从您的问题中,我可以假设您对ListView
回收机械设备不了解
基本上,请查看不再可见的(用户将其从视线滚动后)被回收为显示需要显示的新项目。这就是getView()
方法的convertView
参数...
可能您看到了相同的图像,因为回收视图与相同的图像保持。
还存在异步任务(您的Imagedownload类)的问题,可以在启动请求的原始项目已被回收时执行。
我建议您尽可能地"挖"北斗七星,以了解有关ListView
的所有信息 - 这是最复杂,最重要的UI组件之一。阅读我链接的帖子是一个不错的开始。
此视频也非常重要:
http://www.youtube.com/watch?v=wdbm6wveo70
这是我的getView:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = null;
if(rowResourceId!=R.layout.search_empty_list) {
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflator.inflate(rowResourceId, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.textName = (TextView) view.findViewById(R.id.textView1);
viewHolder.imgPic = (ImageView) view.findViewById(R.id.imgPic);
if (viewHolder.imgPic != null) {
String strUrl = mainUrl+list.get(position).getUrl();
new ImageDownload(viewHolder.imgPic).execute(strUrl);
}
view.setTag(viewHolder);
} else {
view = convertView;
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.textName.setText(list.get(position).getName());
} else {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(rowResourceId, parent, false);
TextView textView1 = (TextView) view.findViewById(R.id.textView1);
textView1.setText(list.get(0).getName());
}
return view;
}