android - 选项卡更改时如何避免重新加载数据?

标签 android

如何避免在选项卡更改时重新加载 recyclerview? 例如,我有一个包含三个 Tab 的 TabLayout,我的 ViewPager 是:

class ViewPagerAdapter extends FragmentPagerAdapter {

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new Tab1Fragment();
                case 1:
                    return new Tab2Fragment();
                case 2:
                    return new Tab3Fragment();
            }
            return null;
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return "tab1";
                case 1:
                    return "tab2";
                case 2:
                    return "tab3";
            }
            return null;
        }

    }

在第一个中,我有一个回收 View ,当我更改选项卡并返回到第一个时,列表会重新加载。 有办法避免这种重新加载吗?保持数据加载。

最佳答案

Android 在 ViewPager 中只在当前 fragment 的任一侧保留一个 fragment 。默认情况下。因此,当您从第三个选项卡返回到第一个选项卡时,它将重新创建第一个选项卡,这就是您的情况。 Here是文档。

您需要将所有 fragment 保存在内存中 viewPager.setOffscreenPageLimit(<(number of fragments in view pager) - 1>)在你的例子中是 2。

当然,正如文档所建议的那样,这个数字应该保持较低,尤其是在布局复杂的情况下。

关于android - 选项卡更改时如何避免重新加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580774/

相关文章:

android - 当 Android Q 中的 minifyEnabled = true 时,具有数据绑定(bind)的 LiveData 不起作用

android - 处理所有屏幕尺寸的android

android - 有选择地启用移动应用程序中的功能的策略

android - 在 OPENSSL 中,在 SSL_Connect() 我得到 SSL_ERROR_WANT_READ

android - 无法连接到 tcp :5037: cannot connect to 127. 0.0.1 :5037: No connection could be made because the target machine actively refused it. (10061)

java - Android Studio 如何将我的项目与 mySQL db 连接(新闻提要应用程序)

Android/Eclipse 应用主题时出现问题

android - 我如何将颜色转换为位图?

java - 将大量数据插入sqlite数据库

java - Android TCP套接字客户端/服务器实现