1
所以,我在Listview
中使用毕加索。以下是我的适配器的相关部分。每个项目都有一个图像和一个标题。我尝试下载该项目的图像,如果该项目的URL是空字符串,我使用本地图像作为占位符。一切工作正常,除了有一个图像刚刚离开屏幕。毕加索重复图像
假设屏幕显示了四个项目,全部都包含图片网址。第五项,就在屏幕上可以看到没有图像的网址,因此应该显示默认的占位符图像。问题是,当我向下滚动时,第五张图像显示第四项的图像。如果我滚动屏幕上的第五个项目并返回,它将恢复为占位符。我在列表中的其他任何地方似乎都没有这个问题。
我在做什么错?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final ViewHolder holder;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.staff_directory_list_item, null);
holder = new ViewHolder();
holder.name = (TextView) v.findViewById(R.id.StaffDirectoryName);
holder.image = (ImageView) v.findViewById(R.id.StaffDirectoryImage);
} else {
holder = (ViewHolder) v.getTag();
}
holder.title.setText(mStaffMembers.get(position).getTitle());
String imageUrl = mStaffMembers.get(position).getImage();
try {
Picasso.with(context).cancelRequest(holder.image);
Picasso.with(context).load(imageUrl)
.placeholder(R.drawable.image_placeholder)
.error(R.drawable.image_placeholder)
.centerCrop()
.fit()
.tag(context)
.into(holder.image);
} catch (IllegalArgumentException e) {
e.printStackTrace();
Picasso.with(context).cancelRequest(holder.image);
Picasso.with(context)
.load(R.drawable.image_placeholder)
.into(holder.image);
}
}
return v;
}