2014-11-24 3 views
0

viewpager를 포함하는 활동이있는 응용 프로그램을 만들고 있는데이 뷰 페이지는 6 개의 조각에 대한 컨테이너 역할을합니다. 액티비티에는 8 개의 항목이 포함 된 회 전자도 있습니다. 내가 달성하고자하는 것은, 스피너에서 항목을 선택할 때 뷰 페이지 내부의 조각을 파괴해야하고 여섯 개의 새로운 조각을 채워야한다는 것입니다.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); 

는 그 48 개 조각 클래스의 총 수 있지만 일이 난 단지 내보기 위해 여섯 XML 레이아웃 파일을 사용하고 있다는 것입니다, 그래서 내가 viewpager 내부 여섯 개 조각과 회 전자 내부에 8 개 개의 항목을 가지고 있고 이러한 전망을 팽창한다는 말했듯 내 모든 조각 안에.

조각을 처음로드 할 때 모든 것이 정상적으로 작동하지만 회 전자에서 항목을 선택하면 조각에 첫 번째 회 전자 항목이 선택되었을 때 입력 한 값이 미리 입력되었습니다.

확실하지 내 응용 프로그램

enter image description here

답변

0

임의 스냅 샷입니다하지만 당신은이 방법으로 당신의 활동 후

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); 
관련 문제