Я хочу создать фотогалерею на Android. Я использую Gallery
и BaseAdapter
для создания прокручиваемой галереи. Теперь я хочу добавить действие, когда отображается изображение галереи (ширина каждого изображения равна ширине экрана), поэтому мне нужно получить его индекс в массиве изображений. У меня вопрос как получить индекс изображения , которое показывает на экране?
Я хочу получить индекс изображения, как только оно отобразится на экране, а не по событию клика.
Я пытался получить текущую позицию изображения в getView()
, но результат странный:
Я прокручиваю до image02, но position = 2 (должно быть 1). Когда я прокручиваю назад, позиция image02 = 0 (должна быть 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;
}