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

问题描述 投票:0回答:2

我已经在我的应用程序中实现了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但是,第二个标签的数据仍在加载中。即,当用户进入屏幕时,它会在单击第二个选项卡时加载第一和第二个数据,加载第三个数据。我想防止这种情况。您能帮忙吗?不胜感激。

android kotlin android-tablayout dynamic-list
2个回答
0
投票

Viewpager具有默认属性,可同时初始化两个页面,因此您无法更改它,但可以根据需要设置OffscreenPageLimit

ViewPager.setOffscreenPageLimit(1)

如果不起作用,您可以尝试使用另一种方法在可见的Fragment中调用API

公共类MyFragment扩展Fragment

{

@ Override

public void setMenuVisibility(最终布尔值可见)

{

super.setMenuVisibility(visible);

    if (visible) {
        // ...
    }

}

// ...}


0
投票

您可以做的一件事情是在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来加载数据。

© www.soinside.com 2019 - 2024. All rights reserved.