2017-01-26 27 views
0

我有一個名爲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

你需要化身對象的實例來更新照片。一種方法是將它的所有實例存儲在List中。

在你的應用類,

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

在頭像類YOUT init方法:

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

現在要更改每個頭像對象中的圖片,遍歷列表和呼叫更新方法。

+0

我讓這個類保存了對象數組,因爲我認爲這樣做更好。它正在工作,但我不是一個很大的粉絲,所以希望有人會想出更好的東西。但是,謝謝。 –

+0

將視圖對象的實例保留在範圍之外從來就不是一個好主意。所以我完全同意你的意見。但我只能拿出這個。 –

+0

嘿它工作:) –