我有ListView
个用户图片。有些用户有个人资料图片,我使用Picasso来加载图片。
如果用户没有图片,请使用TextDrawable我在listview适配器中设置他的图片,如下所示。
if (picture!=null) {
Uri imageUri = Uri.parse(picture);
Picasso.with(holder.pic.getContext()).load(imageUri.toString()).fit().centerCrop().into(holder.pic);
} else {
ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT
int color = generator.getColor(userName);
String userChar = userName.substring(0, 1);
TextDrawable drawable = TextDrawable.builder()
.buildRound(userChar.toUpperCase(), color);
holder.pic.setImageDrawable(drawable);
}
问题是当我滚动列表时,有时图像会混乱,而那些没有图像且应该与TextDrawable
一起显示的图像会与另一个用户个人资料图片一起显示。
如果我使用毕加索加载所有图像,这不会发生。反正有没有将TextDrawable对象传递给picasso来解决这个问题?或者还有其他解决方案吗?
答案 0 :(得分:4)
您可以使用TextDrawable
作为Picasso的可绘制占位符。然后我认为你的问题会得到解决。
ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT
int color = generator.getColor(userName);
String userChar = userName.substring(0, 1);
TextDrawable drawable = TextDrawable.builder()
.buildRound(userChar.toUpperCase(), color);
Picasso.with(holder.pic.getContext()).
load(imageUri.toString()).
placeholder(drawable).
error(drawable).
centerCrop().
into(holder.pic);