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