我有一个名为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
}
}
答案 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);
}
现在更改每个头像对象中的图片,遍历列表,并调用更新方法。