2016-07-18 21 views
1

基本的に私が持っているのは、各タブにwebviewを含むtablayoutです。設定メニューから、ユーザーはタブを追加または削除できます。これが完了したら、私はpageradapter.notifydatasetchanged()を呼び出す必要があります。しかしこれを行うと、すべてのwebviewが更新を開始します。私の質問は、これを避ける方法はありますか?他のタブに影響を与えずにタブを追加または削除したいだけです。pagerAdapter.notifyDataSetChanged()を処理する方法は?

 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); 

答えて

0

私がテストしていないが、あなたはTabLayout#setupWithViewPager(viewPager, false);を使用することができます。

2番目のパラメータは、自動リフレッシュです:

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

私は代わりに、これは私が 'mViewPager.setAdapter(pagerAdapter)、それを使用する方法である、setupwithviewpagerを使用していない;' – choman

+0

私tablayoutの初期のsorceコードをご提示ください。 – nshmura

+0

私は 'setupwithviewpager'が新しい実装だと思っています。今はキャッシュを保存してリロードしようとしていますが、動作させることはできません。私は論理を得ることができません。私はまだすべてのチュートリアルを試しました – choman

関連する問題