GWT如何使用ListHandler和ListDataProvider对CellTable进行排序

Jos*_*osh 2 gwt

我有以下代码


taskDataProvider = new ListDataProvider<TaskHeader>();  
taskDataProvider.addDataDisplay(taskTable);
ListHandler<TaskHeader> columnSortHandler = new ListHandler<TaskHeader>(
            taskDataProvider.getList());
taskTable.addColumnSortHandler(columnSortHandler);

//Some other code that modifies the list in taskDataProvider
Run Code Online (Sandbox Code Playgroud)

当我单击列标题时,会触发ColumnSortEvent,但经过检查,我可以看到columnSortHandler中的列表为空.对taskDataProvider列表所做的任何修改都没有反映在columnSortHandler中.我错过了什么吗?

jon*_*asr 7

这里的例子似乎正是你要找的.根据您展示的代码,我会说您错过了比较器

columnSortHandler.setComparator(yourColumn,
        new Comparator<TaskHeader>() {
          public int compare(TaskHeader t1, TaskHeader t2) {
            return o1.field1.compareTo(o2.field1);
          }
        });
Run Code Online (Sandbox Code Playgroud)

此外,在向dataProvider添加或删除数据时,请确保不设置新列表,而是添加或删除数据.否则你的dataProvider和listHandler将不会使用相同的列表..

别 :

taskDataProvider.setList(newList);
Run Code Online (Sandbox Code Playgroud)

做:

taskDataProvider.getList().add(newItem);
Run Code Online (Sandbox Code Playgroud)