监听变量变化
Listen for variable changes
我能否以某种方式创建一个侦听器(不是按钮)来侦听变量变化(在应用程序范围内),并在发生变化时执行一些代码?
如果可能的话,谁能举个例子说明如何做到最好?
如果您需要更多上下文来回答问题(代码等),我可以提供。但现在我只是想大致了解一下。
您可以将变量设为私有,并为其创建一个 setter。并在更改变量
后在 setter 中调用您的侦听器方法
这是一个非常棒的example
public class InformationVo extends SimpleObservable<InformationVo> {
private String name;
private String urls;
public String getName() {
return name;
}
public void setUrls(String urls) {
this.urls = urls;
notifyObservers(this);
}
public int getUrls() {
return urls;
}
public void setName(String name) {
this.name = name;
notifyObservers(this);
}
}
这里是你想要的观察者class
public class SimpleObservable<T> implements EasyObservable<T> {
private final ArrayList<OnChangeListener<T>> listeners = new ArrayList<OnChangeListener<T>>();
public void addListener(OnChangeListener<T> listener) {
synchronized (listeners) {
listeners.add(listener);
}
}
public void removeListener(OnChangeListener<T> listener) {
synchronized (listeners) {
listeners.remove(listener);
}
}
protected void notifyObservers(final T model) {
synchronized (listeners) {
for (OnChangeListener<T> listener : listeners) {
listener.onChange(model);
}
}
}
希望对您有所帮助。
我能否以某种方式创建一个侦听器(不是按钮)来侦听变量变化(在应用程序范围内),并在发生变化时执行一些代码?
如果可能的话,谁能举个例子说明如何做到最好?
如果您需要更多上下文来回答问题(代码等),我可以提供。但现在我只是想大致了解一下。
您可以将变量设为私有,并为其创建一个 setter。并在更改变量
后在 setter 中调用您的侦听器方法这是一个非常棒的example
public class InformationVo extends SimpleObservable<InformationVo> {
private String name;
private String urls;
public String getName() {
return name;
}
public void setUrls(String urls) {
this.urls = urls;
notifyObservers(this);
}
public int getUrls() {
return urls;
}
public void setName(String name) {
this.name = name;
notifyObservers(this);
}
}
这里是你想要的观察者class
public class SimpleObservable<T> implements EasyObservable<T> {
private final ArrayList<OnChangeListener<T>> listeners = new ArrayList<OnChangeListener<T>>();
public void addListener(OnChangeListener<T> listener) {
synchronized (listeners) {
listeners.add(listener);
}
}
public void removeListener(OnChangeListener<T> listener) {
synchronized (listeners) {
listeners.remove(listener);
}
}
protected void notifyObservers(final T model) {
synchronized (listeners) {
for (OnChangeListener<T> listener : listeners) {
listener.onChange(model);
}
}
}
希望对您有所帮助。