Dynamiquement supprimer un élément à partir d'un ViewPager avec FragmentStatePagerAdapter

Il existe assez peu de discussions autour de ce thème

J'ai essayé différentes solutions (y compris l'invalidation avec POSITION_NONE)
. Mais je ne comprends toujours pas comment faire pour supprimer un élément correctement.

Ce qui se passe est

  • soit j'obtiens une page vide (ce qui signifie le fragment est détruit, mais le
    instantiateItem n'a pas été appelé pour un remplacement)
  • ou toute chose se bloque probablement parce que la façon dont le Android gère le
    fragment instances ne pas correspondre à la façon dont je les garde dans mon
    arraylist/sparsearray

S voici ma adaptateur

private class DatePickerPagerAdapter extends FragmentStatePagerAdapter {

    ArrayList<Fragment> registeredFragments = new ArrayList<Fragment>();

    public DatePickerPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return CreateWishFormDatePaginationFragment.newInstance(position);
    }

    @Override
    public int getItemPosition(Object object){ //doesnt change much.. 
        return PagerAdapter.POSITION_NONE;
    }

    @Override
    public int getCount() {
        return iPageCount;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Fragment fragment = (Fragment) super.instantiateItem(container, position);
        registeredFragments.add(position, fragment);
        return fragment;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, registeredFragments.get(position));
    }

    public void removePage(ViewGroup pager, int position) {
        destroyItem(pager, position, null);
        registeredFragments.remove(position);
        iPageCount--;
        pagerIndicator.notifyDataSetChanged();
        pagerAdapter.notifyDataSetChanged();
    }

    public void addPage() {

        iPageCount++;
        pagerIndicator.notifyDataSetChanged();
        pagerAdapter.notifyDataSetChanged();
    }
}

Je suis l'aide d'une vue pager avec ViewPagerIndicator et je veux être en mesure de supprimer une page entre les deux, par exemple.

Donc la question, quelle est la bonne façon de manutention ajout et la suppression des fragments dans un ViewPager?

Merci!

InformationsquelleAutor Orkun Ozen | 2015-01-23