Android 如何防止使用TabLayout一次加载所有片段数据
我已经在我的应用程序中实现了android.support.design.widget.TabLayout。该选项卡包含来自API的动态数据以及片段中的动态内容。 我正在调用Tab-wise API。但在我的片段中,所有API都调用第一个片段。因此,显示数据需要太多的负载。 我想调用API特定的选项卡。当用户单击to选项卡时,应调用API 我已将ArrayList大小设置为Android 如何防止使用TabLayout一次加载所有片段数据,android,kotlin,android-tablayout,dynamic-list,Android,Kotlin,Android Tablayout,Dynamic List,我已经在我的应用程序中实现了android.support.design.widget.TabLayout。该选项卡包含来自API的动态数据以及片段中的动态内容。 我正在调用Tab-wise API。但在我的片段中,所有API都调用第一个片段。因此,显示数据需要太多的负载。 我想调用API特定的选项卡。当用户单击to选项卡时,应调用API 我已将ArrayList大小设置为offscreenPageLimit,如下所示 viewpager.offscreenPageLimit = mTaskSt
offscreenPageLimit
,如下所示
viewpager.offscreenPageLimit = mTaskStatusListResult.size
经过研究我发现
并设置viewpager.offscreenPageLimit=1
但是,第二个选项卡的数据仍在加载。i、 e当用户进入屏幕时,单击第二个选项卡加载第一个和第二个数据,加载第三个数据。
我想防止这种情况发生。你能帮忙吗。这将是值得赞赏的。 < P> Viewpager具有默认属性同时初始化两个页面,所以你不能改变它,但是你可以将屏幕页面设置为你需要的 ViewPager.setOffscreenPageLimit(1) 若它不起作用,你们可以尝试另一种方法,在片段可见方法中调用API 公共类MyFragment扩展了Fragment { @凌驾 public void setMenuVisibility(最终布尔值可见) { 超级设置可视性(可见) //。。。
} Viewpager具有默认属性,以同时初始化两个页面,这样您就不能更改它,但是您可以将屏幕页边距设置为您需要的 ViewPager.setOffscreenPageLimit(1) 若它不起作用,你们可以尝试另一种方法,在片段可见方法中调用API 公共类MyFragment扩展了Fragment { @凌驾 public void setMenuVisibility(最终布尔值可见) { 超级设置可视性(可见) //。。。
}您可以做的一件事是在
片段的
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来加载数据。您可以做的一件事是在
片段的
private boolean isViewShown = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getView() != null && isVisibleToUser) {
isViewShown = true;
callAPI();
} else {
isViewShown = false;
}
}
当片段仅可见时调用此方法,您可以在此处调用所需的API来加载数据。我以前也遇到过同样的问题,但我找不到方法,仅加载当前片段的方法应该是
offscreenPageLimit=0
,但当我测试它时,我发现offscreenPageLimit内部的行为与以前一样1即使您将其设置为0。我认为您应该将offscreenPageLimit
设置为零,但您也会得到相同的效果。Read我很久以前也有同样的问题,但我找不到方法,只加载当前片段的方法应该是offscreenPageLimit=0
,但当我测试它时,我发现offscreenPageLimit在内部是即使您将其设置为0,它也与1相同。我认为您应该将offscreenPageLimit
设置为零,但您也会得到相同的效果。阅读您可以尝试使用片段可见方法您可以尝试使用片段可见方法setUserVisibleHint
不推荐使用setUserVisibleHint
不推荐使用覆盖函数setMenuVisibility
成功了。setUserVisibleHint
被弃用了setUserVisibleHint
被弃用了我使用了覆盖函数setMenuVisibility
成功了。