Android 如何防止使用TabLayout一次加载所有片段数据

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

我已经在我的应用程序中实现了android.support.design.widget.TabLayout。该选项卡包含来自API的动态数据以及片段中的动态内容。 我正在调用Tab-wise API。但在我的片段中,所有API都调用第一个片段。因此,显示数据需要太多的负载。 我想调用API特定的选项卡。当用户单击to选项卡时,应调用API

我已将ArrayList大小设置为
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
成功了。