如何在Java中删除List 的Handler?

我有这个代码:

private HandlerRegistration filterImageHandlerReg=null; public void resetVariables(){ if(filterImageHandlerReg!=null){ filterImageHandlerReg.removeHandler(); } } public void callData(){ resetVariables(); for(int i=0; i<getView().getFilterImageList().size(); i++){ Image filterImage=getView().getFilterImageList().get(i); filterImageHandlerReg= filterImage.addClickHandler(new ClickHandler(){ @Override public void onClick(ClickEvent event) { System.out.println("test"); } }); } } 

Thre是callData();的按钮callData(); 当我点击那个按钮一次,一切都很好,这意味着当点击图像时它会打印输出:

测试

但是,如果我单击按钮2次,然后单击图像一次,它将打印出来

测试
测试

它意味着Image添加了多个ClickHandler();filterImageHandlerReg.removeHandler(); 不起作用。

如何解决问题?

我想你应该保留一份HandlerRegistration列表。

 private List filterImageHandlerRegistrations=null; public void resetVariables(){ if(filterImageHandlerRegistrations!=null){ for(HandlerRegistration handlerRegistration: filterImageHandlerRegistrations) handlerRegistration.removeHandler(); } } public void callData(){ resetVariables(); filterImageHandlerRegistrations=new ArrayList(); for(int i=0; i