如何更新自定义视图中的所有背景图像 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 对象中的图片,遍历列表,并调用更新方法。
我有一个名为 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 对象中的图片,遍历列表,并调用更新方法。