Android可扩展列表&;添加双击手势,如何添加侦听器?
我的程序创建了可扩展的列表,我还实现了滑动——但我不知道如何添加双击 首先,我有Android可扩展列表&;添加双击手势,如何添加侦听器?,android,expandablelistview,Android,Expandablelistview,我的程序创建了可扩展的列表,我还实现了滑动——但我不知道如何添加双击 首先,我有list=getExpandableListView() 在我的主类中,我使用以下代码实现了swipes: final ActivitySwipeDetector swipeDetector = new ActivitySwipeDetector(); list.setOnTouchListener(swipeDetector); list.setOnItemClickLis
list=getExpandableListView()代码>
在我的主类中,我使用以下代码实现了swipes:
final ActivitySwipeDetector swipeDetector = new ActivitySwipeDetector();
list.setOnTouchListener(swipeDetector);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (swipeDetector.swipeDetected()){
// do the onSwipe action
} else {
// do the onItemClick action
}
}
});
list.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
if (swipeDetector.swipeDetected()){
// do the onSwipe action
return true;
} else {
// do the onItemLongClick action
return false;
}
}
});
但是我不知道如何在主类中为它添加侦听器
这只是给了我“list.setOnDoubleTapListener”和“new onDoubleTapListener”上的错误
请帮忙
Z.上述问题的解决方案:
将以下内容添加到滑动检测器类:private static final int MIN_DISTANCE=100;
私人浮动downX,downY,upX,upY;
私有操作mSwipeDetected=操作。无;
私有长lastTouchTime=-1代码>
将此添加到ActionDown
case MotionEvent.ACTION_DOWN: {
downX = event.getX();
downY = event.getY();
mSwipeDetected = Action.None;
long thisTime = System.currentTimeMillis();
if (thisTime - lastTouchTime < 250) {
// Double click
// p = mapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
lastTouchTime = -1;
Log.i(logTag, "DOUBLE TAP");
} else {
// too slow
lastTouchTime = thisTime;
}
return false; // allow other events like Click to be processed
}
case MotionEvent.ACTION\u向下:{
downX=event.getX();
downY=event.getY();
mSwipeDetected=操作。无;
long ThistTime=System.currentTimeMillis();
如果(这次-上次接触时间<250){
//双击
//p=mapView.getProjection().fromPixels((int)e.getX(),(int)e.getY());
lastTouchTime=-1;
Log.i(logTag,“双击”);
}否则{
//太慢
lastTouchTime=这次;
}
return false;//允许处理单击等其他事件
}
public boolean onDoubleTap(MotionEvent e) {
float x = e.getX();
float y = e.getY();
Log.d("Double Tap", "Tapped at: (" + x + "," + y + ")");
return true;
}
list.setOnDoubleTapListener(new OnDoubleTapListener(){
public boolean onDoubleTap(MotionEvent e) {
return false;
}
public boolean onDoubleTapEvent(MotionEvent e) {
// viewA.setText("-" + "onDoubleTapEvent" + "-");
return false;
}
public boolean onSingleTapConfirmed(MotionEvent e) {
//viewA.setText("-" + "onSingleTapConfirmed" + "-");
return false;
}
});
case MotionEvent.ACTION_DOWN: {
downX = event.getX();
downY = event.getY();
mSwipeDetected = Action.None;
long thisTime = System.currentTimeMillis();
if (thisTime - lastTouchTime < 250) {
// Double click
// p = mapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
lastTouchTime = -1;
Log.i(logTag, "DOUBLE TAP");
} else {
// too slow
lastTouchTime = thisTime;
}
return false; // allow other events like Click to be processed
}