当快速点击页面链接时,寻呼机开始来回更改页面

时间:2014-02-05 09:29:19

标签: gwt pager repeat

我有一个从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毫秒后启用分页链接,但我想知道如何在当前页面上完全获取数据的确切时刻。
感谢。

1 个答案:

答案 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),因此无法在寻呼机内部执行此操作。