Grid binding and row editing with List of Map.

I’m testing the Grid component in Vaadin 8.0.7.
According to the requrement, I should use one Grid to show/edit data from/to of List of Map (List<Map<String, Object>>.)

I can get/show and edit the data for once but when I try to edit same data one more time,
I got NullPointerException: Editor can’t edit null.

Here’s the source code of the binder and binding.

// Binder and Binding
private Binder<Map<String, Object>> binder = grid.getEditor().getBinder();
private Binding<Map<String,Object>,String> binding = binder.forField(ruleNameField).bind((v)->v.get("ruleName").toString(), (v, value)->{
    v.put("ruleName", value);

// Prepare the test data
List<Map<String, Object>> mapList = new ArrayList<>();
Map<String, Object> row = new LinkedHashMap<>();
row.put("ruleName", "Rule 1");

// Prepare the DataProvider and Grid
ListDataProvider<Map<String, Object>> dataProvider = new ListDataProvider<>(mapList);
Grid<Map<String, Object>> grid = new Grid<>();

I think maybe is that the Grid component just don’t think the edited data is in it or the link between Grid and edited data is broken. Is there anything I missed with the binding?

Thanks a lot.