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

时间:2017-01-26 19:39:58

标签: android class android-custom-view

我有一个名为Avatar的自定义视图类。是否有可能编写一个静态函数,当它被调用时,它会改变该类中的所有当前对象以获得特定的图片?

这是我的头像课程

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
}

}

1 个答案:

答案 0 :(得分:1)

您需要Avatar对象的实例才能更新图片。一种方法是将它的所有实例存储在List中。

在您的App类中,

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

在Avatar类的初始化方法中:

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

现在你需要从列表中删除这些视图,你可以在里面完成这样做:

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

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