В моем приложении у меня есть сетка, которая содержит несколько строк.
В каждом ряду я хочу установить переключатель, и в сетке можно выбрать только один переключатель (каждый ряд имеет один переключатель).
Для этого я попытался добавить GridCellRenderer и вернуть переключатель, используя следующий код:
GridCellRenderer<ModelData> button = new GridCellRenderer<ModelData>() {
@Override
public Object render(ModelData model, String property,
ColumnData config, final int rowIndex, int colIndex,
ListStore<MonitorModel> store, Grid<MonitorModel> grid) {
// TODO Auto-generated method stub
final RadioGroup radioGroup = new RadioGroup();
for(int i=0; i<store.getCount(); i++){
radio = new Radio();
radio.setBoxLabel("radio"+rowIndex);
if(radio.getBoxLabel().equals("radio0")&& radio.getValue()== false){
radio.setValue(true);
//isFirstTime = true;
}
radioGroup.addListener(Events.Change, new Listener<FieldEvent>() {
public void handleEvent(FieldEvent fe) {
if (((Boolean)fe.getValue()) == true) {
radio.setValue(true);
}
}
});
}
radioGroup.add(radio);
return radioGroup;
}
};
Когда я загружаю свою сетку, результат правильный.
Но проблема, с которой я сталкиваюсь, заключается в том, что, когда я нажимаю переключатель, все остальные переключатели остаются отмеченными, если они уже были отмечены. Как я могу сделать это, когда я нажимаю на кнопку, остальные кнопки отменяются?
Спасибо.