如何处理pagerAdapter.notifyDataSetChanged()?

时间:2016-07-18 17:05:35

标签: android android-tablayout android-pageradapter

基本上我只有tablayout,每个标签都包含一个webview。从设置菜单中,我允许用户添加或删除选项卡。完成后我需要调用pageradapter.notifydatasetchanged();然而这样做所有webview都开始刷新。我的问题是,有没有办法避免这种情况?我只想在不影响其他标签的情况下添加或删除标签。

     case "Yahoo":
     if (!fragmentList.contains(fragYahoo)) {
      if (tabYahoo == null) {
       tabYahoo = tabLayout.newTab().setText("Yahoo").setTag("Yahoo");
      }
      tabLayout.addTab(tabYahoo);

      fragYahoo = NewsFragment.newInstance("http://www.Yahoo.com/");
      fragmentList.add(fragYahoo);
      navigationView.getMenu().findItem(R.id.Yahoo).setVisible(true);

     }
     break;
    case "stackoverflow":
     if (!fragmentList.contains(fragstackoverflow)) {
      if (tabstackoverflow == null) {
       tabstackoverflow = tabLayout.newTab().setText("stackoverflow").setTag("stackoverflow");
      }
      tabLayout.addTab(tabstackoverflow);

fragstackoverflow = NewsFragment.newInstance("http://www.stackoverflow.com/");
          fragmentList.add(fragstackoverflow);
          navigationView.getMenu().findItem(R.id.stackoverflow).setVisible(true);

         }
       pagerAdapter.notifyDataSetChanged();

pageradapter初始化

 public List<Fragment> fragmentList = new ArrayList<>();

    mViewPager = (ViewPager) findViewById(R.id.pager);

            pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
            mViewPager.setAdapter(pagerAdapter);
            mViewPager.setOffscreenPageLimit(pagerAdapter.getCount()-1);

1 个答案:

答案 0 :(得分:0)

我没有测试,但您可以使用TabLayout#setupWithViewPager(viewPager, false);

第二个参数是autoRefresh:

 * @param autoRefresh whether this layout should refresh its contents if the given ViewPager's
 *                    content changes