2

Я пытался несколько дней работать с функциональностью здания в своем приложении, что позволяет пользователю удалить страницу/фрагмент из Viewpager, я попытался изменить свой 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's ViewPagerIndicator. Он также имеет приложение с открытым исходным кодом с этой функциональностью (добавление и удаление фрагментов из меню опций).

Put это в вас адаптер:

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

Я решил уничтожить деятельность и возобновить ее, возможно, самый грязный способ достижения того, что я был, но он работает, и я потратил достаточно сил на эту жизнь на этом точка LOL –

Смежные вопросы