带有多个onclick监听器和GestureDetector的Android ListView

时间:2014-11-04 15:17:58

标签: android android-listview

我第一次在列表视图中使用GestureDetector。它对我来说很好,直到我在ListView项目上有多个onclick。我希望GestureDetector用于整个列表,但它不能用于我在ListView中的某些项目的onclick事件。

考虑我的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lineraMain"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="100"
    android:background="#FFFFFF">


    <TextView android:id="@+id/meet_time"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:textColor="#FFFFFF"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:background="#ef3d4a"
        android:textStyle="bold"
        android:layout_weight="30"
        android:text="@string/note"/>

    <TextView android:id="@+id/textid"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:textColor="#FFFFFF"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:background="#ef3d4a"
        android:textStyle="bold"
        android:layout_weight="30"
        android:text="@string/note"/>

    <LinearLayout android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:layout_weight="10">

        <ImageView
            android:id="@+id/arrow_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/down"/>

        <ImageView
            android:id="@+id/delete_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:src="@drawable/icon_delete_red"/>

    </LinearLayout>

</LinearLayout>

对于textView的textid和meet_time我设置了onclicklistener,当我尝试在这个文本上滑动时它不起作用。对于GestureDetector,我扩展了SimpleOnGestureListener。

请给我一些建议。谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要了解OnTouch事件的工作原理 首先,OnClickListenerOnTouchListenter的私人案例,它的作用是听取特定视图上的downup触摸事件。如果触摸事件由某个侦听器“处理”,则该侦听器返回 true ,这会阻止事件传播到覆盖/包含它的更多“常规”视图。
在您的情况下,会发生OnClickListener处理事件并且不让ListView获取触摸事件。 您可能可以实现自己的OnClickListener,它只与标准的false不同,因为它会检测到的点击次数ListView
您应该扩展onInterceptTouchEvent并实施ListView这将允许GestureDetector“看到”触摸事件(您可以通过public class MyListView extends ListView { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { //run through your GestureDetector if (ev.getActionMasked() != ACTION_DOWN && yourGestureDetector.onTouchEvent(ev)) { //you have detected your gesture //.... } return false; //return false so that the child TextViews will continue to get touch events } } 运行并相应处理)

{{1}}

希望这有帮助。