J'ai une classe FragmentPagerAdapter simple

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        PagerAdapter fragment;
                fragment = new PagerAdapter(data.get(position));

        return fragment;
    }


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

    @Override
    public CharSequence getPageTitle(int position) {
        if (position >= pageCount || position < 0)
            return null;
        return "Profile " + position;
    }

}

Que PagerAdapter est une classe simple qui s'étend de Fragment. puis j'ai défini une instance de SectionsPagerAdapter sur mon ViewPager.

Le problème est ici:

Au début, j'ai une page sur le pager de vue (la taille des données est de 1), quand j'obtiens plus de données, j'appelle l'instance de SectionsPagerAdapter notifyDataSetChanged, mais dans la méthode getItem (int position) au lieu de la position start form 0, ça commence à 1 !!!

Que devrais-je faire? Je veux recréer mon pager de vue après avoir obtenu plus de données Merci d'avance

1
MehDi 5 avril 2017 à 10:14

2 réponses

Meilleure réponse

Vous deviez redéfinir l'adaptateur pour réinitialiser la position, notifyDataSetChanged est utilisé pour notifier l'adaptateur qu'il y a un changement de données afin de ne relier que les données.

Ou vous pouvez utiliser ce code pour déplacer le téléavertisseur de la position souhaitée

viewPager.setCurrentItem(0);

2
Nithinlal 5 avril 2017 à 07:20

notifyDataSetChanged() notifiera uniquement les observateurs enregistrés que l'ensemble de données a changé indépendamment des positions de viewPager en contact.

Il existe deux classes différentes d'événements de modification de données, de modifications d'éléments et de modifications structurelles. Les changements d'élément se produisent lorsqu'un seul élément a ses données mises à jour mais qu'aucun changement de position ne s'est produit. Les modifications structurelles surviennent lorsque des éléments sont insérés, supprimés ou déplacés dans l'ensemble de données.

Vous devez définir la position de viewPager pour démarrer la page (position 0) manuellement après notifyDataSetChanged () .

adapter.notifyDataSetChanged();
viewPager.setCurrentItem(0);
1
Paresh P. 5 avril 2017 à 07:31