Виджет галереи Android: метод запуска при смене изображения

#android #android-adapterview

#Android #android-adapterview

Вопрос:

 public class GalleryImageAdapter extends BaseAdapter{

    private Activity activity;
    private ArrayList<String> listOfImages;
    public ImageLoader imageLoader; 


    public GalleryImageAdapter(Activity a, ArrayList<String> listOfImages){
        activity = a;
        this.listOfImages = listOfImages;
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    @Override
    public int getCount() {
        return listOfImages.size();
    }

    @Override
    public Object getItem(int position) {
        return listOfImages.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        View v = convertView;


        if (v == null) {
            LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.gallery_layout, null);

        }



        final String url = listOfImages.get(position);


         ImageView galleryImage = (ImageView) v.findViewById(R.id.galleryImage);
         imageLoader.DisplayImage(url, activity, galleryImage);


         v.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT,200));
        return v;
    }


     public float getScale(boolean focused, int offset) {
         /* Formula: 1 / (2 ^ offset) */
           return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
       }

}
  

Здесь у меня есть адаптер для галереи. Мне интересно, есть ли метод, который я могу использовать, который позволяет мне определять, когда изображение изменено, и извлекает номер позиции изображения, чтобы я мог отправить его в свою активность.

Комментарии:

1. Вы имеете в виду, когда изображение перемещается в центр и выбирается? В этом случае вы можете использовать setOnItemSelectedListener() для галереи.

Ответ №1:

Позиция — это то, что вам нужно. Смотрите AdapterView.OnItemSelectedListener.

     mGallery.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int position, long id) {
            // position will display it's place in the adapter
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // Do nothing
        }
    });