Java 无法对单元格表列进行排序
我想把我的手机支架整理好,但我没法让它工作。我有一个MVP应用程序,它从rest服务获取数据。在表中显示数据可以正常工作,但排序不起作用Java 无法对单元格表列进行排序,java,gwt,gwt-celltable,Java,Gwt,Gwt Celltable,我想把我的手机支架整理好,但我没法让它工作。我有一个MVP应用程序,它从rest服务获取数据。在表中显示数据可以正常工作,但排序不起作用 public class LicenseUsageUserViewImpl<T> extends Composite implements LicenseUsageUserView<T> { @UiTemplate("LicenseUsageUserView.ui.xml") interface LicenseData
public class LicenseUsageUserViewImpl<T> extends Composite implements LicenseUsageUserView<T> {
@UiTemplate("LicenseUsageUserView.ui.xml")
interface LicenseDataViewUiBinder extends UiBinder<ScrollPanel,LicenseUsageUserViewImpl> {}
private static LicenseDataViewUiBinder uiBinder = GWT.create(LicenseDataViewUiBinder.class);
@UiField
CellTable<GWTLicenseUser> licenseUserCellTable;
List<GWTLicenseUser> licenseUsers;
ListDataProvider<GWTLicenseUser> dataProvider;
public List<GWTLicenseUser> getLicenseUsers() {
return licenseUsers;
}
public void setLicenseUsers(List<GWTLicenseUser> licenseUsers) {
this.licenseUsers = licenseUsers;
}
@UiField Label header;
ListHandler<GWTLicenseUser> sortHandler;
public LicenseUsageUserViewImpl() {
initWidget(uiBinder.createAndBindUi(this));
initCellTable();
}
@Override
public void setLicenseUsersTable(List<GWTLicenseUser> tmpLicenseUsers) {
if (tmpLicenseUsers.isEmpty()) {
licenseUserCellTable.setVisible(false);
} else {
setLicenseUsers(tmpLicenseUsers);
licenseUserCellTable.setWidth("100%");
licenseUserCellTable.setVisible(true);
licenseUserCellTable.setPageSize(getLicenseUsers().size());
licenseUserCellTable.setRowCount(getLicenseUsers().size(), false);
licenseUserCellTable.setRowData(0, getLicenseUsers());
licenseUserCellTable.setVisibleRange(new Range(0, licenseUserCellTable.getRowCount()));
sortHandler.setList(getLicenseUsers());
dataProvider.getList().clear();
dataProvider.getList().addAll(getLicenseUsers());
}
}
@Override
public void initCellTable() {
sortHandler = new ListHandler<GWTLicenseUser>(getLicenseUsers());
licenseUserCellTable.addColumnSortHandler(sortHandler);
licenseUserCellTable.setWidth("100%");
licenseUserCellTable.setVisible(true);
licenseUserCellTable.setVisibleRange(new Range(0, licenseUserCellTable.getRowCount()));
// Create a data provider.
dataProvider = new ListDataProvider<GWTLicenseUser>();
// Connect the table to the data provider.
dataProvider.addDataDisplay(licenseUserCellTable);
licenseUserCellTable.setWidth("100%");
licenseUserCellTable.setAutoHeaderRefreshDisabled(true);
licenseUserCellTable.setAutoFooterRefreshDisabled(true);
// userID
TextColumn<GWTLicenseUser> userIdColumn = new TextColumn<GWTLicenseUser>() {
@Override
public String getValue(GWTLicenseUser object) {
if (object != null ){
return object.getUserId();
} else {
return "NULL";
}
}
};
userIdColumn.setSortable(true);
sortHandler.setComparator(userIdColumn, new Comparator<GWTLicenseUser>() {
@Override
public int compare(GWTLicenseUser o1, GWTLicenseUser o2) {
return o1.getUserId().compareTo(o2.getUserId());
}
});
licenseUserCellTable.addColumn(userIdColumn, "User ID");
// more column entries
licenseUserCellTable.getColumnSortList().push(userIdColumn);
licenseUserCellTable.getColumnSortList().push(countColumn);
licenseUserCellTable.addColumnSortHandler(sortHandler);
}
}
公共类LicenseUsageUserViewImpl扩展复合实现LicenseUsageUserView{
@UiTemplate(“LicenseUsageUserView.ui.xml”)
接口许可证DataViewUIBinder扩展UiBinder{}
私有静态LicenseDataViewUiBinder uiBinder=GWT.create(LicenseDataViewUiBinder.class);
@尤菲尔德
CellTable许可证用户CellTable;
列出持牌人及使用者名单;
ListDataProvider数据提供者;
公共列表getLicenseUsers(){
退回持牌人或使用者;
}
public void setLicenseUsers(列出licenseUsers){
this.licenseUsers=licenseUsers;
}
@UiField标签头;
ListHandler-sortHandler;
公共许可证UsageUserViewImpl(){
initWidget(uiBinder.createAndBindUi(this));
initCellTable();
}
@凌驾
public void setLicenseUsersTable(列出tmplicenseuser){
if(tmpLicenseUsers.isEmpty()){
licenseUserCellTable.setVisible(false);
}否则{
setLicenseUsers(tmpLicenseUsers);
licenseUserCellTable.setWidth(“100%”);
licenseUserCellTable.setVisible(true);
setPageSize(getLicenseUsers().size());
licenseUserCellTable.setRowCount(getLicenseUsers().size(),false);
setRowData(0,getLicenseUsers());
licenseUserCellTable.setVisibleRange(新范围(0,licenseUserCellTable.getRowCount());
setList(getLicenseUsers());
dataProvider.getList().clear();
dataProvider.getList().addAll(getLicenseUsers());
}
}
@凌驾
public void initCellTable(){
sortHandler=新的ListHandler(getLicenseUsers());
licenseUserCellTable.addColumnSortHandler(sortHandler);
licenseUserCellTable.setWidth(“100%”);
licenseUserCellTable.setVisible(true);
licenseUserCellTable.setVisibleRange(新范围(0,licenseUserCellTable.getRowCount());
//创建一个数据提供者。
dataProvider=新的ListDataProvider();
//将表连接到数据提供程序。
dataProvider.addDataDisplay(licenseUserCellTable);
licenseUserCellTable.setWidth(“100%”);
licenseUserCellTable.setAutoHeaderRefreshDisabled(true);
licenseUserCellTable.setAutoFooterRefreshDisabled(true);
//用户ID
TextColumn userIdColumn=newtextcolumn(){
@凌驾
公共字符串getValue(GWTLicenseUser对象){
if(对象!=null){
返回object.getUserId();
}否则{
返回“NULL”;
}
}
};
userIdColumn.setSortable(true);
setComparator(userIdColumn,newComparator()){
@凌驾
公共整数比较(GWTLicenseUser o1、GWTLicenseUser o2){
返回o1.getUserId().compareTo(o2.getUserId());
}
});
licenseUserCellTable.addColumn(userIdColumn,“用户ID”);
//更多列条目
licenseUserCellTable.getColumnSortList().push(userIdColumn);
licenseUserCellTable.getColumnSortList().push(countColumn);
licenseUserCellTable.addColumnSortHandler(sortHandler);
}
}
setLicenseUsersTable
从我的活动中调用,其中包含我的用户的响应列表。当我启动我的应用程序并进行rest调用时,我的数据被提供并放入我的列表中,该列表也显示在CellTable中,但它不可排序,但我的列名称前有一个排序图标。我想我发布了整个代码,因为我认为它更容易看到我试图做什么
感谢您的帮助。删除此行:
sortHandler.setList(getLicenseUsers());
您已经在中向SortHandler构造函数传递了一个列表
sortHandler = new ListHandler<GWTLicenseUser>(getLicenseUsers());
您可能需要使用
licenseUsers.addAll(tmpLicenseUsers);
我希望其中一个能解决这个问题
licenseUsers.addAll(tmpLicenseUsers);