如何更新自定义视图中的所有背景图像 class

how to update all background images in a custom view class

我有一个名为 Avatar 的自定义视图 class。是否可以编写一个静态函数,在调用它时将所有当前对象从 class 更改为具有特定图片?

这是我的头像class

public class Avatar extends RoundedImageView {

private static String avatarURL;
private Context context;

public Avatar(Context context) {
    super(context);
    init();
}

public Avatar(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
    init();
}

public Avatar(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.context = context;
    init();
}

private void init(){
    Picasso.with(context).load(avatarURL).into(this);
}

public static void updatePicture(String url){
    avatarURL = url;
    //update all avatars
}

}

您需要 Avatar 对象的实例来更新图片。一种方法是将它的所有实例存储在一个列表中。

在您的应用程序中 class,

public static List<Avatar> avatarList = new ArrayList();

在头像的初始化方法中 class :

private void init(){
    App.avatarList.add(this);
    Picasso.with(context).load(avatarURL).into(this);
}

现在您还需要从列表中删除这些视图,您可以像这样在 finalize 中执行此操作:

@Override
    protected void finalize() throws Throwable {
        super.finalize();
        App.avatarList.remove(this);
    }

现在要更改每个 Avatar 对象中的图片,遍历列表,并调用更新方法。