如何在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