Seleccione el elemento en CellList usando SelectionModel o ListDataProvider

He usado CellList para listar mis datos usando ListDataProvider para administrar los datos y SelectionModel para seleccionar un elemento de CellList y generar eventos en consecuencia.

Ahora, cuando actualizo o elimino un elemento usando cellList.getList (). Set (index, bean) o cellList.getList (). Remove (), realiza correctamente la operación. Pero después de eso, selecciona automáticamente el primer registro en CellList que no quiero.

¿Alguien puede sugerir cómo puedo anular la selección del registro seleccionado en CellList?

Abajo está el código de cómo estoy inicializando el modelo de selección y el proveedor de listas:

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

Cuando agrego el nuevo registro:

dataProvider.getList().add(0, appsBean);

Para actualizar el registro:

AppsBean bean = singleSelectionModel.getSelectedObject();
dataProvider.getList().set(dataProvider.getList().indexOf(bean), appsBean);

Y para eliminar:

int selectedIndex = dataProvider.getList().indexOf(singleSelectionModel.getSelectedObject());
dataProvider.getList().remove(selectedIndex);

Respuestas a la pregunta(3)

Su respuesta a la pregunta