带有onTouch和onItemLongClick监听器的Android列表视图

时间:2015-04-13 19:03:26

标签: android android-layout listview ontouchlistener onitemlongclicklistener

您好我还在开发Android应用程序。之前我使用OnTouch监听器创建了一个listview,用于滑动和双击以及OnItemLongClick以执行拖放操作。这是一个简单的,只包含textview 现在我改为使用textview和按钮的自定义列表视图行。使用此配置,两个手势检测中的一个是可用的。当我将android:longclickable设置为true时,拖放是可能的,但它不会检测OnTouch。这也是相反的方式。有没有人有解决方案来同时使用手势检测?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content" >

    <TextView   
     android:id="@+id/rowTextView"   
     android:layout_width="fill_parent"   
     android:layout_height="wrap_content"
     android:padding="10dp"  
     android:textSize="16sp" >  
    </TextView>

    <ImageButton
     android:id="@+id/rowImgButton"
     android:layout_width="40dp"
     android:layout_height="40dp"
     android:background="#ffff00"
     android:focusable="false"
     android:focusableInTouchMode="false"
     android:layout_alignRight="@+id/rowTextView" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

这可能有用,你可以创建一个GestureDetector:

myGestureDetector = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public void onLongPress(MotionEvent e) {
                //Handle long press
            }
        });
myGestureDetector.setIsLongpressEnabled(true);

然后在你的onTouch方法中:

public boolean onTouch (View v, MotionEvent event) {
    myGestureDetector.onTouchEvent(e);
    ...
}

然后当用户执行长按时,onLongPress方法应该触发