2012-05-04 3 views
1

J'essaie d'utiliser un pager de vue pour faire une galerie. Néanmoins c'est toujours la vue à la position 1 qui est mise à jour alors que j'essaye de mettre à jour la page actuelle (0 par défaut). J'ai d'abord créé une vue qui va être gonflée par le pager. Cette vue est composée de 4 images et 4 textview.View pager ne gonfle pas la bonne page

Ensuite, j'ai créé un adaptateur pour le téléavertisseur:

public class LivePagerAdapter extends PagerAdapter { 

    private CameraList cameras = null; 

    public LivePagerAdapter(CameraList cams) 
    { 
     this.cameras = cams; 
    } 

    @Override 
    public int getCount() { 
     return this.cameras.size() /4; // 4 imageview in a page 
    } 

    public void setCameras(CameraList cams) 
    { 
     this.cameras = cams; 
    } 

    @Override 
    public Object instantiateItem(View container, int position) { 
     LayoutInflater inflater = LayoutInflater.from(container.getContext()); 

     View view = inflater.inflate(R.layout.pager,null); 
     ((ViewPager) container).addView(view,0); 
     return view; 
    } 
} 

Enfin dans mon activité je suis instancier téléavertisseur comme ceci:

adapter = new LivePagerAdapter(this.listeCamera); 
pager = (ViewPager) findViewById(R.id.camspager); 
pager.setAdapter(adapter); 
pager.setCurrentItem(0); 

Après que je suis un initialisant tableau avec mon 4 imageview:

tabImageView.add((ImageView) findViewById(R.id.cam1)); //Imageview located in the view loaded by the pager 
tabImageView.add((ImageView) findViewById(R.id.cam2)); 
tabImageView.add((ImageView) findViewById(R.id.cam3)); 
tabImageView.add((ImageView) findViewById(R.id.cam4)); 

Et si nécessaire, j'ajoute une image dans l'image.

Cela semble fonctionner sauf que je demande au pager de commencer à la position 0 et c'est la vue de la position 1 qui est mise à jour avec mes images.

Quand j'utilise findViewById(somethingInflatedByThePager) j'ai besoin que ce soit la page actuelle, comment puis-je faire cela?

Répondre

3

Qu'est-ce qui se passe si vous remplacez ((ViewPager) container).addView(view,0); par ((ViewPager) container).addView(view);

+0

simple que cela, merci! – grunk

+1

Bon à l'oreille que cela vous aide. N'oubliez pas que si vous utilisez eclipse, lorsque vous placez votre curseur sur une méthode, vous pouvez avoir une description rapide comme: void android.view.ViewGroup.addView (Voir l'enfant, index int) public void addView (Voir l'enfant , int index) Depuis: API Niveau 1 Ajoute une vue enfant. Si aucun paramètre de disposition n'est déjà défini sur l'enfant, les paramètres par défaut de ce ViewGroup sont définis sur l'enfant. Paramètres ** enfant \t l'affichage enfant à ajouter ** ** index \t la position à laquelle ajouter l'enfant ** –

Questions connexes