使用setOnLongClickListener时,setOnItemClickListener不起作用 - Android

时间:2015-09-15 02:05:47

标签: android android-gridview

正如主题所示,setOnItemClickListener在使用setOnLongClickListener时不起作用,我在基础适配器中使用的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:baselineAligned="false"
                android:descendantFocusability="blocksDescendants"
                android:paddingBottom="20dp"
                android:paddingTop="5dp">


    <com.mikhaellopez.circularimageview.CircularImageView
        android:id="@+id/image1"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="2dp"
        android:focusable="false"
        app:border_color="#EEEEEE"
        app:border_width="4dp"/>

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/contacts_grid_image"
        android:layout_centerHorizontal="true"
        android:focusable="false"
        android:text="Name"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textSize="11dp"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_centerHorizontal="true"
        android:focusable="false"
        android:text="Mobile number"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textSize="9dp"/>


</RelativeLayout>

我正在使用它,

image.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
                String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};

                ClipData dragData = new ClipData("test", mimeTypes, item);

                MyDragShadowBuilder myShadow = new MyDragShadowBuilder(holder.image);
                if (groups.size() > holder.position) {
                    v.startDrag(dragData, myShadow, null, 0);

        return true;
            }
        });

这个,

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                 Log.i(TAG, "clicked");

            }
        });

现在,当我点击图片时,项目点击不起作用,但是当我点击文本视图时它会起作用,我做错了什么?

另请注意,当我删除image.setOnLongClickListener()时,整个gridview项目再次变为可点击。

1 个答案:

答案 0 :(得分:1)

这应该是GridView的预期行为,因为子视图是可点击的,即使它只处理OnLongClick。

作为解决方法,您可以

  1. setOnClickListener让ImageView执行与setOnItemClickListener
  2. 相同的操作
  3. 考虑使用setOnItemLongClickListener,但这会影响整个RelativeLayout
  4. 使用onTouchListener,但这需要更多作品