快速单击页面链接时,寻呼机开始来回切换页面
Posted
技术标签:
【中文标题】快速单击页面链接时,寻呼机开始来回切换页面【英文标题】:Pager starts to change pages back and forth when clicking page links fast 【发布时间】:2014-02-05 09:29:18 【问题描述】:我有一个从 AbstractPager 扩展的寻呼机,其中每次更改范围或行数时,我都会重新创建其中包含的 NavLink,因此寻呼机看起来像这样: 1 2 3 … N-1 N N+1 … M-2 M-1 M 我的算法工作正常,但是当我开始快速(就像非常疯狂地)点击链接时,一个 RangeChange 事件正在执行(我的寻呼机附加到的 CellTable 显示旋转试图在给定页面上获取数据)已经有另一个事件总线。它会导致在无限循环中来回更改当前页面。 我尝试仅在使用 Scheduler.get().scheduleDeferred 和 .scheduleFinally 完全获取当前页面时启用分页链接,但没有运气。 我的临时解决方案是使用 Scheduler.get().scheduleFixedDelay() 在 500 毫秒后启用分页链接,但我想知道如何获取当前页面上完全获取数据的确切时刻。 谢谢。
【问题讨论】:
【参考方案1】:如果您有同样的问题,您需要在 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),因此无法在寻呼机内部执行此操作。
【讨论】:
以上是关于快速单击页面链接时,寻呼机开始来回切换页面的主要内容,如果未能解决你的问题,请参考以下文章
在Vue 3中单击路由器链接时如何在不重新加载页面的情况下切换侧边栏
关于含RecyclerView的fragment来回切换时页面自动滑动到底部的解决方法