2015-06-03 15 views
0

我有一个主持人是这样的:如何分组字段,以获取一个变化值处理

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())); 
      } 
     }); 
} 
} 

正如你看到的我有过滤器和现场的每个值变化从过滤器应该调用重载(...)方法来获取新的数据。

可以将过滤器的字段分组到一个组中,并且可以实现更改处理程序?像这样:

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

我想你可以通过注册两个filterItemName和filterItemAmount相同的处理程序实现更多或更少相同的行为:

ChangeHandler handler = new ChangeHandler() {...} 
this.display.getFilterItemAmount().addChangeHandler(handler); 
this.display.getFilterItemName().addChangeHandler(handler); 
相关问题