2016-07-18 3 views
1

В основном все, что у меня есть, - это tablayout с каждой вкладкой, содержащей веб-просмотр. В меню настроек я разрешаю пользователю добавлять или удалять вкладки. Когда это будет сделано, мне нужно вызвать pageradapter.notifydatasetchanged(); однако при этом все веб-просмотр начинает обновляться. Мой вопрос: есть ли способ избежать этого? Я просто хочу, чтобы вкладка была добавлена ​​или удалена без влияния на другие вкладки.Как обращаться с 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);.

Второй параметр AutoRefresh:

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

Я не использую setupwithviewpager, а это, как я его использовать 'mViewPager.setAdapter (pagerAdapter);' – choman

+0

Пожалуйста, покажите мне Sorce код инициализации tablayout. – nshmura

+0

Обновите код, как указано. Я не использую 'setupwithviewpager', потому что он выполняет эту работу. Я думаю, что' setupwithviewpager' является более новой реализацией. Rt теперь я пытаюсь сохранить кеш и перезагрузить его, но не могу заставить его работать. Я не могу понять логику. Я пробовал все учебники, все еще застрявшие – choman

Смежные вопросы