GridView получить элемент с координатами X и Y - PullRequest
1 голос
/ 16 декабря 2011

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

Я пытаюсь использовать вместо OnSingleTapConfirmed.

Это класс MyGestureDetector:

class MyGestureDetector extends SimpleOnGestureListener {

    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        System.out.println(" in onFling() :: ");
        if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
            return false;
        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            vf.setInAnimation(inFromRightAnimation());
            vf.setOutAnimation(outToLeftAnimation());
            vf.showNext();
        } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            vf.setInAnimation(inFromLeftAnimation());
            vf.setOutAnimation(outToRightAnimation());
            vf.showPrevious();
        }
        return super.onFling(e1, e2, velocityX, velocityY);
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        // TODO Auto-generated method stub
        Log.e("Item Click","Item Click");

        return super.onSingleTapConfirmed(e);
    }

}

Что мне нужно сделать сейчас, это захватить, какой элемент таблицы сетки был выбран, используя координаты x и y (e.getX () и e.getY ()).

Кто-то ответил здесь https://stackoverflow.com/a/6419223/1025506, что использование метода pointToPosition должно работать, но я не знаю, как этого добиться.

Спасибо и извините за мой английский.

1 Ответ

5 голосов
/ 04 января 2012

Мне наконец-то удалось это сделать с помощью метода gridview pointtoposition () внутри onSingleTapConfirmed.

 if (myGridView.pointToPosition((int)e.getX(), (int)e.getY())!=-1) {
     myItem = myAdapter.getItem(myGridView.pointToPosition((int)e.getX(), (int)e.getY()));
 }
...