首页 > 解决方案 > 如何防止使用 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 但是,第二个选项卡的数据仍在加载。即,当用户进入屏幕时,它会在单击第二个选项卡时加载第一个和第二个数据,加载第三个数据。我想阻止这种情况。你能帮忙吗?将不胜感激。

标签: androidkotlinandroid-tablayoutdynamic-list

解决方案


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


推荐阅读