【问题标题】:Android: Updating tab contentAndroid:更新标签内容
【发布时间】:2016-04-11 15:38:52
【问题描述】:

我是 Android 开发的新手。我有一个ViewPager,其中包含TabLayout(具有固定数量的选项卡)。 ViewPagerSectionPagerAdapter(有一个对应于标签的片段)。

现在,我想在用户选择选项卡并使其可见时(或当用户想要刷新内容时)更新选项卡内容。

但我不确定哪种方法是正确的。

到目前为止,我找到了两个解决方案:

1) 将监听器添加到TabLayout:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 
{
    @Override
    public void onTabSelected(TabLayout.Tab tab) 
    {
        mViewPager.setCurrentItem(tab.getPosition());
        // Update tab containts here
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) 
    {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) 
    {

    }
});

2) 使用ViewPager.OnPageChangeListener 获取页面片段(在选项卡内)变为可见时的回调:

viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() 
{
    @Override
    public void onPageSelected(int position) 
    {
        // Update tab containts here
    } 
});

这方面的专家可以给我建议吗?

【问题讨论】:

    标签: android android-fragments android-tabs android-tablelayout


    【解决方案1】:

    viewpager 适配器的工作方式(使用选项卡)是,一旦您将片段添加到 viewpager,那么您基本上需要向片段添加内容并让适配器管理在选择给定选项卡时哪个片段可见。

    因此,只需在 tabLayout 上使用:OnTabSelectedListenerinterface,您所需要做的就是 `setCurrentItem(tab.getPosition());在您的 viewPager 参考上(来自您的布局)。

    您可以使用这样的方法将片段添加到您的 viewPagerAdapter:

    private void setupViewPager(ViewPager viewPager){
        //then create an instance of your ViewPagerAdapter class here
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    
        //then add fragments for each TAB here
        //by calling a method inside your Adapter like this
        adapter.addFrag(new FragmentOne(), "TITLE HERE");
        adapter.addFrag(new FragmentTwo(), "TITLE TWO");
    
        //Now set your adapter here
        viewPager.setAdapter(adapter);
    }
    

    现在在您的片段中,您可以相应地显示不同的内容。

    我希望这会有所帮助!

    【讨论】:

    • 因此,使用onTabSelected 来获取选择了哪个选项卡。感谢您的回答。老实说,我仍然不太清楚 tablayout viewpager 片段和适配器之间的关系。如果您可以共享任何文档链接,并通过图表和示例进行描述,那就太好了。
    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多