gpt4 book ai didi

java - 无法对 CellTable 列进行排序

转载 作者:行者123 更新时间:2023-12-01 12:32:54 27 4
gpt4 key购买 nike

尝试使我的 CellTable 列可排序,但我无法使其工作。我有一个 MVP 应用程序,它从休息服务获取数据。显示表中的数据工作正常,但排序不起作用。

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

}

}

setLicenseUsersTable 是从我的 Activity 中调用的,其中包含我的用户的响应列表。当我启动我的应用程序并进行休息调用时,我的数据被提供并放入我的列表中,该列表也显示在 CellTable 中,但它不可排序,但我的列名称之前有这个排序图标。我想我发布了整个代码,因为我认为它更容易看到我正在尝试做什么。

感谢您的帮助。

最佳答案

删除此行:

sortHandler.setList(getLicenseUsers());

您已将 List 传递到 SortHandler 构造函数中

sortHandler = new ListHandler<GWTLicenseUser>(getLicenseUsers());

另外,代替

setLicenseUsers(tmpLicenseUsers);

您可能需要使用

licenseUsers.addAll(tmpLicenseUsers);

我希望其中之一能够解决这个问题。

关于java - 无法对 CellTable 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25805177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com