我已经在我的应用程序中实现了android.support.design.widget.TabLayout。该选项卡包含来自API的动态数据以及片段中的动态内容。我正在调用Tab明智的API。但是在我的片段中,所有API都调用第一个片段。因此,显示数据需要太多的负担。我想明智地调用API。当用户单击选项卡时,应调用API。
我已将ArrayList的大小设置为offscreenPageLimit
,如下所示
viewpager.offscreenPageLimit = mTaskStatusListResult.size
研究后,我发现https://stackoverflow.com/a/39455160/9635628并设置viewpager.offscreenPageLimit = 1
但是,第二个标签的数据仍在加载中。即,当用户进入屏幕时,它会在单击第二个选项卡时加载第一和第二个数据,加载第三个数据。我想防止这种情况。您能帮忙吗?不胜感激。
Viewpager具有默认属性,可同时初始化两个页面,因此您无法更改它,但可以根据需要设置OffscreenPageLimit
ViewPager.setOffscreenPageLimit(1)
如果不起作用,您可以尝试使用另一种方法在可见的Fragment中调用API
公共类MyFragment扩展Fragment
{
@ Override
public void setMenuVisibility(最终布尔值可见)
{
super.setMenuVisibility(visible);
if (visible) {
// ...
}
}
// ...}
您可以做的一件事情是在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来加载数据。