Je veux créer une galerie photo sur Android. J'utilise Gallery
et BaseAdapter
pour créer une galerie déroulante. Maintenant je veux ajouter une action quand une image de la galerie est montrée (la largeur de chaque image est la même que la largeur d'écran), ainsi j'ai besoin d'obtenir son index dans le tableau d'image. Ma question est comment obtenir l'index de l'image qui montre sur l'écran?Comment créer une galerie de photos sur Android?
Je veux obtenir l'index de l'image dès qu'il apparaît sur l'écran, pas sur l'événement click. J'ai essayé d'obtenir la position actuelle de l'image dans getView()
, mais le résultat est étrange:
Je fais défiler jusqu'à l'image02 mais la position = 2 (devrait être 1). Quand je reviens en arrière, la position de l'image02 = 0 (devrait être 1).
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery g = (Gallery) this.findViewById(R.id.Gallery);
g.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private Integer[] mImageIds = {
//each image's size is 320x60
R.drawable.btm01,
R.drawable.btm02,
R.drawable.btm03
};
public ImageAdapter(Context c){
this.mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mImageIds.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mImageIds[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(320,60));
return imageView;
}
Je veux obtenir l'index de l'image dès qu'il apparaît, pas sur l'événement click. Est-ce possible? –
Je pense que l'index devrait être renvoyé à partir de quelque chose comme un événement onScroll. Mais je ne trouve aucune fonction à utiliser. –
@iPhoney: Qu'est-ce que vous avez besoin de cela? Cela n'a aucun sens pour moi mais vous pouvez utiliser 'position' dans la méthode' getView() '. – Macarse