我有一个这样的演示者:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilterItemName().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText()));
}
});
this.display.getFilterItemAmount().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterItemAmount()
.getText()));
}
});
}
}
如您所见,我有过滤器,并且来自过滤器的字段上的每个值更改都应调用reload(...)方法来获取新数据。
可以将字段从过滤器分组到一个组,并且可以实现更改处理程序吗?像这样:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
Filter getFilter();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilter.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText(), display.getFilterItemAmount()
.getText()));
}
});
}
}
答案 0 :(得分:0)
我认为通过在filterItemName和filterItemAmount上注册相同的处理程序,您可以实现或多或少相同的行为:
ChangeHandler handler = new ChangeHandler() {...}
this.display.getFilterItemAmount().addChangeHandler(handler);
this.display.getFilterItemName().addChangeHandler(handler);