2014-07-19 51 views
0

使用ViewPager。为适配器PageStateAdapter调用notifyDataSetChanged()方法,更新所有页面。它如何只更新ViewPager中的当前页面?仅更新ViewPager中的当前页面

onCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View myView = inflater.inflate(R.layout.my_layout, container, false); 
    MyPageAdapter myAdapter = new MyPageAdapter(getChildFragmentManager(), true); 
    ViewPager myPager = (ViewPager) myView.findViewById(R.id.my_pager); 
    myPager.setAdapter(myAdapter); 
    myPager.setCurrentItem(0); 
} 

PageAdapter:

// 
    private class MyPagerAdapter extends FragmentStatePagerAdapter { 
     private MyFragment[] fragments; 


     public MyPagerAdapter(FragmentManager fm) { 
      super(fm); 

      fragments = new MyFragment[] { new Fragment1(), new Fragment2(), new Fragment3() }; 
     } 

     @Override 
     public Fragment getItem(int i) { 
      return fragments[i]; 
     } 

     @Override 
     public int getCount() { 
      return fragments.length; 
     } 

     @Override 
     public void restoreState(Parcelable state, ClassLoader loader) { 

     } 
    } 
// 
+0

使用'setTag()'方法来设置标签对于特定的页面,然后使用'findViewWithTag()'来标识页面。 – dreamcoder

+0

如果你编写代码来做这件事,我将不胜感激,我已经花了很多时间,但不明白它是如何写的。请。 –

回答

0

要查找当前页面添加addTab()方法在adapter类。在该方法中设置Tag.

public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
     TabInfo info = new TabInfo(clss, args); 
     tab.setTag(info); 
     tab.setTabListener(this); 
     mTabs.add(info); 
     mActionBar.addTab(tab); 
     notifyDataSetChanged(); 
    } 

然后TabSelected您可以检查Tag

@Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     Object tag = tab.getTag(); 
     for (int i=0; i<mTabs.size(); i++) { 
      if (mTabs.get(i) == tag) { 
       mViewPager.setCurrentItem(i); 
      } 
     } 
    } 

欲了解更多信息,您可以访问thisthis链接

相关问题