2017-01-26 7 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

あなたが絵を更新するアバターオブジェクトのインスタンスが必要になりますです。その1つの方法は、リストのすべてのインスタンスをリストに格納することです。アプリのクラスで

、アバタークラスのyoutはinitメソッドで

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

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

ねえ、それは:) –

関連する問題