I have used CellList for listing my data using ListDataProvider for managing the data and SelectionModel for selecting an element from CellList and generating events accordingly.
Now when i update or delete element using cellList.getList().set(index, bean) or cellList.getList().remove() it sucessfully do the operation. But after that it automatically selects the first record in CellList which i do not want.
Can anyone suggest how can i deselect the selected record in CellList?
Below is the code how i am initializing the selectionmodel and listprovider:
ListDataProvider<AppsBean> dataProvider = new ListDataProvider<AppsBean>();
CellList<AppsBean> appsCellList;
SingleSelectionModel<AppsBean> singleSelectionModel;
ProvidesKey<AppsBean> keyProvider = new ProvidesKey<AppsBean>() {
public Object getKey(AppsBean item) {
// Always do a null check.
return (item == null) ? null : item.getId();
}
};
//here cell is the AbstractCell<AppsBean>
appsCellList = new CellList<AppsBean> (cell, keyProvider);
dataProvider.addDataDisplay(appsCellList);
appsCellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
singleSelectionModel = new SingleSelectionModel<AppsBean>(keyProvider);
appsCellList.setSelectionModel(singleSelectionModel);
singleSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
AppsBean selectedApp = singleSelectionModel.getSelectedObject();
if (selectedApp != null)
appsForm.fillApps(selectedApp);
}
});
When i am adding the new record:
dataProvider.getList().add(0, appsBean);
For updating the record:
AppsBean bean = singleSelectionModel.getSelectedObject();
dataProvider.getList().set(dataProvider.getList().indexOf(bean), appsBean);
And for delete:
int selectedIndex = dataProvider.getList().indexOf(singleSelectionModel.getSelectedObject());
dataProvider.getList().remove(selectedIndex);