android - 如何防止使用 TabLayout 一次加载所有片段数据
问题描述
我已经在我的应用程序中实现了android.support.design.widget.TabLayout。该选项卡包含来自 API 的动态数据以及片段中的动态内容。我正在调用 Tab wise API。但在我的片段中,所有 API 都调用了第一个片段。因此,显示数据需要太多负载。我想明智地调用 API 特定的选项卡。当用户单击选项卡时,应调用 API。
我已将 ArrayList 大小设置为offscreenPageLimit
如下所示
viewpager.offscreenPageLimit = mTaskStatusListResult.size
经过研究,我发现https://stackoverflow.com/a/39455160/9635628
并设置viewpager.offscreenPageLimit = 1
但是,第二个选项卡的数据仍在加载。即,当用户进入屏幕时,它会在单击第二个选项卡时加载第一个和第二个数据,加载第三个数据。我想阻止这种情况。你能帮忙吗?将不胜感激。
解决方案
您可以做的一件事是在Fragment's
setUserVisibleHint
覆盖方法中
private boolean isViewShown = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getView() != null && isVisibleToUser) {
isViewShown = true;
callAPI();
} else {
isViewShown = false;
}
}
该方法仅在该片段可见时调用,您可以在此处调用所需的 API 来加载数据。
推荐阅读
- django-models - 如果对象的到期日期到了,我如何通过我的 django Web 应用程序发送电子邮件?
- python - AttributeError:模块“tensorflow”没有属性“div”
- pdf - 打开一个大的pdf文件
- automated-tests - 避免 net::ERR_CONNECTION_RESET Protractor JS chromedriver
- python - 如何使用 Selenium 刮取每行的网站 ID
- mysql - 如何使用 GROUP_CONCAT 更新 MySQL 表?
- python - 我的 Postgresql 搜索在后端有效,但在前端无效
- javascript - 如何获取div的html文本
- javascript - 如果数据相同,则推送对象数组
- arrays - svelte - 使用带有 Each 函数的嵌套 json 数组