我有一个包含 3 列的表,当用户单击其中一个列时,应该对表进行排序,我正在使用 AsyncDataProvider,第一列的排序工作正常,所以我应该对其他列执行相同的操作。这是代码:
AsyncDataProvider<PermisoUI> providerPerfiles = new AsyncDataProvider<PermisoUI>() {
@Override
protected void onRangeChanged(HasData<PermisoUI> display) {
if(sortedPermiso) {
sortedPermiso=false;
class TipoCuotasComparator implements Comparator<Object> {
public int compare(Object l1, Object l2) {
PermisoUI o1 = (PermisoUI) l1;
PermisoUI o2 = (PermisoUI) l2;
return o2.getId().compareTo(o1.getId());
}
}
Collections.sort(listPermisos, new TipoCuotasComparator());
}else {
sortedPermiso = true;
class TipoCuotasComparator implements Comparator<Object> {
public int compare(Object l1, Object l2) {
PermisoUI o1 = (PermisoUI) l1;
PermisoUI o2 = (PermisoUI) l2;
return o1.getId().compareTo(o2.getId());
}
}
Collections.sort(listPermisos, new TipoCuotasComparator());
}
int start = display.getVisibleRange().getStart();
int end = start + display.getVisibleRange().getLength();
end = end >= listPermisos.size() ? listPermisos.size() : end;
List<PermisoUI> sub = listPermisos.subList(start, end);
updateRowData(start, sub);
}
};
providerPerfiles.addDataDisplay(CellTblPermisos);
//Sorting Column
AsyncHandler columnSortAplHandler = new AsyncHandler(CellTblPermisos);
CellTblPermisos.addColumnSortHandler(columnSortAplHandler);
CellTblPermisos.getColumnSortList().push(permisoColumn);
providerPerfiles.addDataDisplay(CellTblPermisos);
providerPerfiles.updateRowCount(listPermisos.size(), true);
PPerfil.clear();
PPerfil.add(CellTblPermisos);