GWT Массив обработчика кликов контрольного списка не работает

Я пытался сгенерировать массив флажков и динамический обработчик кликов для них, но обработчик не работает.

Любое предложение будет приветствоваться. Заранее спасибо за время.

private void addButtonListener() {      
    goButton.addClickHandler(new ClickHandler() {           
        @SuppressWarnings("rawtypes")
        @Override
        public void onClick(ClickEvent arg0) {              
            String strQuery="Select BRANCH_NAME from SAMPLE_ACC_BRANCH where GL_CODE='"+gll_textfield.getText().trim()+"'";
            HibernateImplUtils.getSearchResult(strQuery, new AsyncCallback() {                  
                private int i;
                @Override
                public void onFailure(Throwable arg0) 
                {arg0.printStackTrace();}
                @Override
                public void onSuccess(Object arg0) {                        
                    System.err.println("Inside Success");
                    List branchNameList=(List) arg0;
                    System.err.println("Branch List:::"+branchNameList);                        
                        for(i=0;i<branchNameList.size();i++){
                            checkbox[i]=new CheckBox((String) branchNameList.get(i));                               
                            vpanel.add(checkbox[i]);
                            checkbox[i].addClickHandler(new ClickHandler() {                                    
                                @Override
                                public void onClick(ClickEvent arg0) {                                      
                                    if(checkbox[i].getValue()){
                                        System.out.println("NAME::::"+checkbox[i].getText());
                                    }
                                    System.out.println("Selected check box ::::"+checkbox[i].getText());
                                }
                            });                                             
                    }                       

                }
            });             

        }
    });

}   

2 ответа

Решение

Сфера "я" хитроумно. Самым быстрым решением было бы сделать "окончательную" копию для вашего обработчика событий. например, "final int i2 = i"

Внутренний класс, вероятно, хочет значение индекса при его создании.

Я хотел бы использовать последнюю ссылку на созданный вами флажок или ссылку, переданную обработчику событий (таким образом, вы также можете использовать один экземпляр).

(Модифицированный)

    final int i2=i;                         
    checkbox[i2].addClickHandler(new ClickHandler() {                                    
      @Override
        public void onClick(ClickEvent arg0) {
        if(checkbox[i2].getValue()){                                           
           System.out.println("NAME::::"+checkbox[i2].getText());
                }

              }
          }); 
Другие вопросы по тегам