Android: 更新选项卡内容

Android: Updating tab content

我是 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 获取页面片段(在 Tab 内)变为可见时的回调:

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

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

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

因此,只需在您的 tabLayout 上使用 OnTabSelectedListener 界面,您需要做的就是 `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);
}

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

希望对您有所帮助!