我有一个从AbstractPager扩展的Pager,每次更改范围或行数时,我都会重新创建其中包含的NavLink,因此pager看起来像这样:
1 2 3 ... N-1 N N + 1 ... M-2 M-1 M
我的算法运行正常,但是当我开始一个RangeChange事件执行时(我的寻呼机附加的CellTable显示旋转尝试获取给定页面上的数据)时,我开始快速点击链接(就像真的很疯狂),已经有另外一个来到EventBus。它导致在无限循环中来回改变当前页面
我试图通过使用Scheduler.get()。scheduleDeferred和.scheduleFinally来提取当前页面时启用分页链接,但没有运气。
我的临时解决方案是使用Scheduler.get()。scheduleFixedDelay()在500毫秒后启用分页链接,但我想知道如何在当前页面上完全获取数据的确切时刻。
感谢。
答案 0 :(得分:0)
如果您遇到同样的问题,则需要在CellTable上挂起LoadingChangeEvent.Handler,检查数据是否已完全加载并通知寻呼机,以便寻呼机可以激活它的NavLinks:
pager.setDisplay(cellTable);
cellTable.addLoadingStateChangeHandler(new LoadingStateChangeEvent.Handler() {
@Override
public void onLoadingStateChanged(LoadingStateChangeEvent event) {
if (event.getLoadingState() == LoadingStateChangeEvent.LoadingState.LOADED) {
pager.activateNavLinks();
};
}
});
由于setDisplay()接受HasRows并且addLoadingStateChangeHandler()在AbstractHasData中(AbstractHasData实现HasData,HasData实现HasRows),因此无法在寻呼机内部执行此操作。