2010-07-30 6 views
1

Salut Je veux afficher les éléments gallary à plusieurs reprises.ce qui signifie que lorsque je me déplace vers l'avant ou vers l'arrière il n'y a pas besoin de fin d'images gallary.If je prends 23 elemets array pour assigner des images à gallary répétez quand je vais en avant ou en arrière du gallary.For celui-ci s'il vous plaît me donner quelques suggestions.Merci à l'avancerépétez les éléments de la galerie

Répondre

6

C'est assez similaire à this question. vous devez créer une condition dans votre méthode getView() où vous vérifiez si vous êtes au dernier élément, puis vous redémarrez à la première en utilisant un modulo dans le getCount.

EDIT Cela pourrait être un exemple, vous pouvez réutiliser:

public class TestGallery extends Activity { 
private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4 }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gallery); 

    Gallery g = (Gallery) findViewById(R.id.gallery); 
    g.setAdapter(new ImageAdapter(this)); 

    g.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, long id) { 
      if (position >= mImageIds.length) { 
       position = position % mImageIds.length; 
      } 
      Toast.makeText(TestGallery.this, "" + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

public class ImageAdapter extends BaseAdapter { 
    int mGalleryItemBackground; 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
     TypedArray a = obtainStyledAttributes(R.styleable.default_gallery); 
     mGalleryItemBackground = a.getResourceId(R.styleable.default_gallery_android_galleryItemBackground, 0); 

     a.recycle(); 
    } 

    public int getCount() { 
     return Integer.MAX_VALUE; 
    } 

    public Object getItem(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 

    public long getItemId(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView i = new ImageView(mContext); 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     i.setImageResource(mImageIds[position]); 
     i.setLayoutParams(new Gallery.LayoutParams(80, 80)); 
     i.setScaleType(ImageView.ScaleType.FIT_XY); 
     i.setBackgroundResource(mGalleryItemBackground); 
     return i; 
    } 

    public int checkPosition(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 
} 

}

+0

désolé mon mauvais, j'ai oublié quelque chose avant de le copier pour vous. ajoutez "position =" avant "checkPosition (position);" dans getView – Sephy

+0

J'ai corrigé l'exemple ci-dessus pour que tout fonctionne. – Sephy

+0

On dirait que vous avez une erreur dans votre méthode getItem. – Zammbi

Questions connexes