Initialiser un fragmentPagerAdapter à une position précise
Bonjour,
J'essaye depuis un moment déjà de setter la position de mon FragmentPagerAdapter quand je l'instancie.
Je m'explique : j'ai une Activity avec une gridview qui montre une miniature de toutes les images que j'ai récupéré dans un album facebook. J'ai aussi un slider (FragmentPagerAdapter) qui m'affiche toutes ces images et où je peux slider d'une image à l'autre. Jusqu'ici tout fonctionne parfaitement.
Ce que j'aimerais bien faire maintenant c'est que quand je clique sur une image dans le gridview, cela m'affiche mon slider à la position de l'image sur laquelle j'ai cliqué. Pour le moment quand je fais ça ça m'affiche mon slider depuis la première image.
Je sais comment récupéré la position dans mon gridview et l'envoyé à mon slider. Par contre ce que je ne sais pas c'est comment setter cette position dans le fragmentPagerAdapter pour qu'il m'instancie mon slider et qu'il m'envoie directement à la bonne position, de façon à si je slide vers la droite j'ai ma photo précédente et si je slide vers la gauche j'ai ma photo suivante.
Ici le code de mon FragmentPagerAdapter et du Fragment qui contient les photo :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
private int count;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
count = 1;
}
@Override
public Fragment getItem(int position) {
return SectionFragment.newInstance(position, urlMap, getApplicationContext());
}
@Override
public int getCount() {
return count;
}
public void setCount(int _count) {
count = _count;
}
}
public static class SectionFragment extends Fragment {
static String url;
static SparseArray<String> urlMap;
static Context context;
int mNum;
static public SectionFragment newInstance(int pos, SparseArray<String> _urlMap, Context _context)
{
SectionFragment f = new SectionFragment();
urlMap = _urlMap;
context = _context;
if (urlMap != null && pos <= urlMap.size())
url = urlMap.get(pos);
Bundle args = new Bundle();
args.putInt("num", pos);
f.setArguments(args);
return (f);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);
ImageView mImageView = (ImageView) rootView.findViewById(R.id.section_label);
int loader = R.drawable.loader;
ImageLoader imgLoader = new ImageLoader(context);
imgLoader.DisplayImage(urlMap.get(mNum), loader, mImageView);
return rootView;
}
} |
Merci d'avance pour votre aide !
Edit: PS: Si vous avez des idées pour faire la même chose mais d'une autre manière je suis preneur aussi.