如何更新TabLayout组件中的选项卡内容?

时间:2017-07-19 19:33:51

标签: android

我有这个应用程序

TabLayout tabs

显示歌曲列表(第一个标签),视频列表以及收藏夹,音频和视频列表。

当我更新-add或删除 - 收藏夹中的视频时...如果我直接传递到收藏夹选项卡,则ListView不会刷新。

只有当我转到第一个标签-Audio-然后转到第三个标签时,ListView才会更新 - 收藏 - 。

详细说明:

  • 这三个标签放在ViewPager中。
  • 每个标签都是一个片段
  • TabLayout与ViewPager
  • 相关联
  • 数据来自单身人士,提供有关歌曲和视频的信息。

在不转到第一个标签的情况下更新“收藏夹”标签需要做什么?

1 个答案:

答案 0 :(得分:1)

这是因为片段是与您的活动同时创建的,具体取决于某些参数,当您导航到第一个选项卡时,第三个片段的布局会更新,因为视图寻呼机会将页面保持在屏幕外的空闲状态每边的默认值为1,您可以使用以下方式设置值:

mViewPager.setOffscreenPageLimit(value_that_you_want); //can't be less than 1

1

的示例

你有3个片段A - B - C.

  • 当你开始活动时,你在A,所以rigth片段是 B,然后A和B将立即创建。
  • 当你去B时,你有 每边一个片段,然后创建C.
  • 当你去C时 片段A在C的左侧是两个并且将被销毁, 当你回到A时会发生同样的情况,B将保持空闲状态和C. (A的右侧两个)将被销毁。

主要问题

要刷新第三个而不返回第一个,您将为viewPager实现pageChangeListener并在侦听器中更新您想要的内容

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

            if(position == 2){ // your third fragment are at position 2
               // update your UI here
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

选择第三个片段后,代码将被执行