點擊ListView的setOnItemClickListener失效

1. 概述

在開發(fā)過程中,顯示 listview 列表數(shù)據(jù)中時,如果 listview的item的控件含有 textview、CheckBox、Button、ImageButton等本身帶有click等事件的View,這個時候,點擊 ListView時,setOnItemClickListener可能會失效:

2. 原因與解決方案

1>:原因如下:

此時 在item 區(qū)域中,event(事件)的焦點被內部 View搶占了,也就是說只有 內部的View的click事件有效,而item的事件無法被觸發(fā),所以導致 點擊listview的 item 時,不能響應點擊事件;

2>:解決方法如下:

在 item的根布局中添加如下屬性即可:
android:descendantFocusability="blocksDescendants",表示 ViewGroup會覆蓋子類控件而直接獲取焦點;

代碼如下:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/rl_commodity"
        android:background="@drawable/bg_shape_select_car"
        android:elevation="@dimen/px10"
        android:padding="@dimen/px20"
        android:layout_marginLeft="@dimen/px30"
        android:layout_marginRight="@dimen/px30"
        android:layout_marginTop="@dimen/px30"
        android:layout_marginBottom="@dimen/px20"
        android:descendantFocusability="blocksDescendants"
        >
        <CheckBox
            android:id="@+id/ck_chose"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:button="@drawable/check_box_style"
            android:scaleX="0.4"
            android:scaleY="0.4" />
        <cn.uploo.yhh.view.CircleImageView
            android:id="@+id/iv_show_pic"
            android:layout_width="@dimen/px80"
            android:layout_height="@dimen/px80"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@id/ck_chose"
            android:src="@mipmap/test_1"
            />
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="15dp"
            android:layout_toRightOf="@id/iv_show_pic"
            android:orientation="vertical"
            android:id="@+id/ll_1"
            >
            <cn.uploo.yhh.view.CustomTextView
                android:id="@+id/tv_commodity_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="酒紅色純紅色純羊毛西服套裝"
                android:textColor="@color/black"
                android:textSize="14sp"
                />
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:visibility="invisible"
                >
                <cn.uploo.yhh.view.CustomTextView
                    android:id="@+id/tv_commodity_attr"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="3dp"
                    android:text="屬性:粉藍色"
                    android:textSize="14sp"
                    />
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:orientation="horizontal">
                <cn.uploo.yhh.view.CustomTextView
                    android:id="@+id/tv_commodity_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="¥390"
                    android:textColor="@color/red"
                    android:textSize="14sp"
                    />
                <cn.uploo.yhh.view.CustomTextView
                    android:id="@+id/tv_commodity_num"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:text="x1"
                    android:textColor="@color/gray"
                    android:visibility="invisible"
                    />
                <LinearLayout
                    android:id="@+id/rl_edit"
                    android:layout_width="120dp"
                    android:background="@color/qianhui"
                    android:layout_height="30dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginBottom="@dimen/px20"
                    >
                    <TextView
                        android:id="@+id/iv_sub"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:textColor="@color/black"
                        android:background="@color/white_c"
                        android:layout_margin="1dp"
                        android:layout_height="match_parent"
                        android:text=" - " />

                    <TextView
                        android:id="@+id/tv_commodity_show_num"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:background="@color/white_c"
                        android:layout_margin="1dp"
                        android:layout_height="match_parent"
                        android:text="1"
                        android:textSize="@dimen/text_32"
                        />

                    <TextView
                        android:id="@+id/iv_add"
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:background="@color/white_c"
                        android:layout_margin="1dp"
                        android:layout_height="match_parent"
                        android:text=" + " />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
        <ImageView
            android:id="@+id/tv_commodity_delete"
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="@mipmap/icon_delete"
            android:gravity="center"
            android:layout_margin="5dp"
            android:visibility="gone" />

    </RelativeLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/px1"
        android:layout_below="@id/rl_commodity"
        android:background="@color/bg_hui"
        android:layout_marginTop="@dimen/px20"
        />

</RelativeLayout>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容