2013-05-05 3 views
0

J'ai écrit cette classe qui étend FragmentStatePagerAdapter afin de faire glisser entre les vues. Maintenant, je dois faire la liste de balayage circulaire de sorte que glisser après le dernier fragment afficherait le premier fragment. Je n'ai pas trouvé un moyen de le faire correctement, aucune aide?Comment faire une boucle (du dernier fragment au premier) dans un FragmentStatePagerAdapter

est ici le code de l'adaptateur:

public class DetailsPagerAdapter extends FragmentStatePagerAdapter { 

List<Detail> details=null; 

public DetailsPagerAdapter(FragmentManager supportFragmentManager, List<Detail> details) { 
    super(supportFragmentManager); 
    this.details=details; 
} 

@Override 
public Fragment getItem(int i) { 
    System.out.println("Fetching item at position "+i); 
    Fragment fragment = new DetailsFragment(); 

    Bundle args = new Bundle(); 
    args.putString("img",details.get(i).getImageFileName()); 
    args.putString("desc",details.get(i).getDescription()); 
    fragment.setArguments(args); 
    return fragment; 
} 

public int getCount() { 
    return details.size(); 
} 

}

+0

Jetez un oeil à [ 'InfiniteViewPager'] (https://github.com/antonyt/InfiniteViewPager), qui est censé faire ce que vous cherchez. –

Répondre

1

dans votre adaptateur, essayez quelque chose comme ça

 @Override 
     public Fragment getItem(int pos) { 
      pos = pos % details.size(); 
      .... 
     } 

     @Override 
     public int getCount() { 
      return 99999; 
     } 
+0

Je ne suis pas sûr que quelque chose comme ça fonctionnerait. J'ai essayé de jouer avec le premier opérande mais comme prévu, getCount() retournerait des valeurs dans [0, details-size() - 1] qui ne ferait que raccourcir la collection de mes objets et n'afficher qu'un sous-ensemble des fragments que je veux montrer . – wallen

+0

s'il vous plaît attendre, mal fixer ma réponse, j'étais étourdi quand j'ai écrit cette réponse :) –

+0

vérifier ma réponse –

Questions connexes