我有一个显示一些图像的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方法应该有效,但我不知道如何实现。
谢谢,对不起我的英语。
答案 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()));
}