GridView获取带有x和y坐标的项目

时间:2011-12-16 10:36:02

标签: android gridview coordinates ontouchevent

我有一个显示一些图像的gridview。我已经实现了一个ViewFlipper来导航gridviews页面,我的问题是我现在不能使用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())捕获gridview中的哪个项目。

有人回答https://stackoverflow.com/a/6419223/1025506使用pointToPosition方法应该有效,但我不知道如何实现。

谢谢,对不起我的英语。

1 个答案:

答案 0 :(得分:5)

我终于设法使用onSingleTapConfirmed中的gridview pointtoposition()方法来做到这一点。

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