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

당신은 사진을 업데이트 할 아바타 개체의 인스턴스를해야합니다. 한 가지 방법은 목록에 모든 인스턴스를 저장하는 것입니다. 당신의 앱 클래스에서

, 아바타 클래스의이 행해져 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

안녕하세요 :) –

관련 문제