2014-07-19 108 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鏈接

相關問題