2014-11-24 83 views
0

我正在創建一個應用程序,其中包含viewpager的活動,並且此viewpager充當六個片段的容器。該活動還有一個包含8個項目的微調器。我試圖達到的目的是當我從一個微調選項中選擇一個項目時,viewpager中的片段應該被銷燬,並且應該填充六個新的片段。Viewpager未正確更新

我正在使用FragmentStatePagerAdapter來實現此目的。

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

    public ScreenSlidePagerAdapter(FragmentManager manager, ArrayList<Fragment> fmList) { 
     super(manager); 
     pagerFragmentList = fmList; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return pagerFragmentList.get(position); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 

    @Override 
    public int getCount() { 
     return pagerFragmentList.size(); 
    } 
} 

這就是我如何加載新數據。

pagerFragmentList.clear(); 
pagerFragmentList = newFragmentList;       
mPagerAdapter.notifyDataSetChanged(); 
mPager.setCurrentItem(0); 

正如我告訴我有內部viewpager 6個片段和8項內微調,以便使共有48個片段類的,但事情是,我只使用六個XML佈局文件我的看法和我吹這些意見在我所有的片段裏面。

第一次加載片段時,一切正常,但是當我從一個微調器中選擇一個項目時,片段顯示了我在選擇第一個微調項目時輸入的預先輸入的值。

這是我的應用程序

enter image description here

回答

0

Im的快照不知道,但你可以嘗試這樣

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

    public ScreenSlidePagerAdapter(FragmentManager manager, ArrayList<Fragment> fmList) { 
     super(manager); 
     pagerFragmentList = fmList; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return pagerFragmentList.get(position); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 

    @Override 
    public int getCount() { 
     return pagerFragmentList.size(); 
    } 

    public void mDatasetChanged(ArrayList<Fragment> mFmList){ 
      pagerFragmentList = mFmList; 
      this.notifyDataSetChanged(); 
    } 

} 

,然後在活動

pagerFragmentList.clear(); 
pagerFragmentList = newFragmentList;       
mPagerAdapter.mDatasetChanged(pagerFragmentList); 
mPager.setCurrentItem(0);