J'ai un pageradapter que j'utilise pour afficher un diaporama d'images mais il se bloque lorsque je définis une limite d'écran inférieure.PagerAdapter plantant
Voici mon code
public class ProjectPicturesAdapter extends PagerAdapter {
private List<String> pictures;
private LayoutInflater inflater;
private final RequestManager glide;
public ProjectPicturesAdapter(RequestManager glide, LayoutInflater inflater, List<String> pictures) {
this.pictures = pictures;
this.glide = glide;
this.inflater = inflater;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View image = inflater.inflate(R.layout.slider_image, container, false);
ImageView myImage = (ImageView) image.findViewById(R.id.image);
glide.load(pictures.get(position))
.centerCrop()
.crossFade()
.placeholder(R.drawable.project_placeholder)
.into(myImage);
container.addView(myImage);
return myImage;
}
@Override
public void destroyItem(ViewGroup container, int position, Object view) {
container.removeView((View) view);
}
@Override
public int getCount() {
return pictures.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
}
La façon dont je suis l'initialisation de l'adaptateur est ce
ProjectPicturesAdapter picturesAdapter = new
ProjectPicturesAdapter(Glide.with(this), LayoutInflater.from(this),
images);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(picturesAdapter);
pager.setOffscreenPageLimit(1);
S'il y a plus de 2 images puis il se bloque, je pourrais toujours augmenter la limite hors écran mais que se passe-t-il s'il y a 20 images, je ne peux pas garder la limite hors écran comme 20.
Mon journal de panne donne une erreur indiquant que l'enfant spécifié a déjà un parent. Vous devez d'abord appeler removeView() sur le parent de l'enfant.
Utilisez FragmentStatePagerAdapter et essayer. –