2

사용자가 ViewPage에서 페이지/조각을 제거 할 수있게 해주는 응용 프로그램에서 며칠 동안 고생했습니다. FragmentPageAdapter를 FragmentStatePageAdapter로 변경하고 getItemPosition()return POSITION_NONE;으로 변경하려고 시도했지만 여전히 허용되지 않습니다. 내가 fragments.remove(page);Android Viewpager 조각을 동적으로 제거하는 방법은 무엇입니까?

pageAdapter.notifyDataSetChanged(); 

사람이 이전에 성공적으로 이런 짓을하고있다 호출 할 때 나 동적 조각을 제거하는 방법? 정말 간단해야하지만 그것은 아래에 내 조각 어댑터입니다, 어떤 도움이 먼 길로 갈 것이라고 생각하지 않아!

class MyPageAdapter extends FragmentStatePagerAdapter { 

    private List<Fragment> fragments; 

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) { 

     super(fm); 

     this.fragments = fragments; 

    } 

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

    @Override 
    public Fragment getItem(int position) { 

     return this.fragments.get(position); 

    } 

    @Override 
    public float getPageWidth(int position) { 

     if (position == 0) { 
      return (0.75f); 
     } else { 
      return (1f); 
     } 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 

     MyFragment theFragment = (MyFragment) this.fragments.get(position); 

     return theFragment.returnTitle(); 

    } 

    @Override 
    public int getCount() { 

     return this.fragments.size(); 

    } 

} 

답변

2

Jake Wharton의 ViewPagerIndicator을 사용하십시오. 또한이 기능을 가진 오픈 소스 샘플 응용 프로그램이 있습니다 (옵션 메뉴에서 조각을 추가 및 제거).

public void setCount(int count) { 
    if (count > 0 && count <= 10) { 
     mCount = count; 
     notifyDataSetChanged(); 
    } 
} 

그리고이 페이지를 추가하고있다 : 당신 어댑터에

넣어이

이 페이지를 제거하는 방법입니다
if (mAdapter.getCount() < 10) { 
     mAdapter.setCount(mAdapter.getCount() + 1); 
     mIndicator.notifyDataSetChanged(); 
    } 

:

if (mAdapter.getCount() > 1) { 
       mAdapter.setCount(mAdapter.getCount() - 1); 
       mIndicator.notifyDataSetChanged(); 
      } 
+2

내가 파괴하기로 결정을 활동을하고 그것을 다시 시작, 아마도 내가 뭘했는지 달성의 가장 오염 될 수있는 가능한 방법 그러나 그것은 일하고 ive 이걸로 이것에 내 인생을 낭비했다. 포인트 롤 –