我有一个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作为毕加索的可绘制占位符。我想你的问题会解决的。

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);

关于android - Android在ListView中使用Picasso和TextDrawable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34567359/

10-09 06:11