首页 > 解决方案 > 在 Spinner 中处理冗长的数据加载

问题描述

我在 Android 中有两个 Spinner。用户从第一个中进行选择,然后根据第一个中的选择填充第二个 Spinner 的适配器。数据必须来自 REST 服务器(速度不是很快),因此第二个 Spinner 需要很长时间才能加载。

从 UI 的角度来看,最好的方法是什么?我可以做几件事,例如:显示 Spinner 所在的加载圈,或禁用第二个 Spinner,直到加载新数据。

这些似乎不是非常理想的解决方案,我很想知道是否有更好的方法来做到这一点。

请注意,在页面显示之前缓存第一个 Spinner 的所有可能选择的所有可能值并不是一个真正的选项,因为这需要多次调用服务器并且每次调用需要几秒钟。我无法控制所提供的服务器或端点。

标签: androidrestserverspinneradapter

解决方案


我会推荐骨架样式加载。仅显示可以使用的真实控件。因此,如果第一个微调器强制 API 调用。我会使用“可取消的协程作业”,这样如果他们再次选择,它就可以被取消。

然后创建第二个下拉动画的骨架闪烁,直到它准备好。忙碌的指标圈已经播出,人们讨厌看到它们。

但是,如果您确定要制作繁忙指示器圆圈,那么我会亲自在微调器控件上覆盖一个小的忙碌指示器,并使微调器控件在准备好之前无法聚焦。

此外,如果您实现了存储库和 MVVM 模式,您可以在获取更新的数据时交回缓存数据(如果这适合您的模型)。

https://uxdesign.cc/what-you-should-know-about-skeleton-screens-a820c45a571a


推荐阅读