2014-11-04 1 views
1

계속 변경되는 변수에 대한 사용자 지정 수신기를 만들고 변경 내용이 등록 될 때마다 내 표시 (TextView)를 추적하고 유지하려고합니다. 참조를 가져 왔습니다. In Android, how do I take an action whenever a variable changes? 하지만이 작업은 한 번만 실행됩니다. 지속적으로 변경 사항을 추적하고 상태 변경시 디스플레이를 업데이트하고 싶습니다.변수 android에 대한 사용자 지정 수신기를 만드는 방법은 무엇입니까?

+0

변수는 어떻게 변경됩니까? –

답변

6

나는 이것을하는 많은 방법을 생각할 수 있지만, 가장 단순한 것은 "듣기"를 원치 않는 변수의 래퍼를 작성하고, getter와 setter를 구현하고, 물론 리스너 인터페이스를 구현하는 것이라고 생각합니다. . ,

ObservableInteger obsInt = new ObservableInteger(); 

obsInt.setOnIntegerChangeListener(new OnIntegerChangeListener() 
{ 
    @Override 
    public void onIntegerChanged(int newValue) 
    { 
     //Do something here 
    } 
}); 

당신은 (설정 (...)로) 값을 변경할 때마다 :

public interface OnIntegerChangeListener 
{ 
    public void onIntegerChanged(int newValue); 
} 

public class ObservableInteger 
{ 
    private OnIntegerChangeListener listener; 

    private int value; 

    public void setOnIntegerChangeListener(OnIntegerChangeListener listener) 
    { 
     this.listener = listener; 
    } 

    public int get() 
    { 
     return value; 
    } 

    public void set(int value) 
    { 
     this.value = value; 

     if(listener != null) 
     { 
      listener.onIntegerChanged(value) 
     } 
    } 
} 

그런 다음 당신은 그것을 사용 : 는 int 형 변수에 "수신"할 supose 수 있습니다 청취자는, null가 아닌 경우,

0

당신이 더 복잡 어쩌면 취할 수있는 또 다른 옵션 called- 될 것입니다 (http://developer.android.com/guide/components/services.html)

기본적으로 서비스를 만드는 것입니다, 당신은 "작업을 만들 "변수가 변경되었거나 값이 아니라면 정기적으로 검사하는 루프를 만드는 백그라운드에서 변수가 변경되면 작업을 수행 할 수있는 활동에 공개 메서드를 만들어야합니다.

나에게있어서 제안 된 다른 옵션은 나를 위해 더 현명하게 들리지만 그게 당신을 위해 일하지 않는다고 언급했습니다.

관련 문제