在ListView中,列表项有按钮onListItemClick不起作用

时间:2013-02-28 15:00:33

标签: android

在我的ListView中,我的列表项具有如下视图

这是我的row.xml布局

<?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="match_parent"
    android:background="@color/Peru"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/et_back_yellow"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib_edit"
            android:layout_width="35dp"
            android:layout_height="30dp"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:background="@drawable/ib_selector"
            android:contentDescription="@string/edit"
            android:src="@drawable/edit" />

        <TextView
            android:id="@+id/tv_date"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="100"
            android:gravity="center_vertical|center_horizontal" />

        <TextView
            android:id="@+id/tv_time"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="100"
            android:gravity="center_vertical|center_horizontal" />

        <ImageButton
            android:id="@+id/ib_delete"
            android:layout_width="35dp"
            android:layout_height="30dp"
            android:layout_marginBottom="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:background="@drawable/ib_selector"
            android:contentDescription="@string/edit"
            android:src="@drawable/delete" />
    </LinearLayout>

    <EditText
        android:id="@+id/et_note"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/title"
        android:layout_alignRight="@+id/title"
        android:layout_below="@+id/title"
        android:layout_marginTop="5dp"
        android:ems="10"
        android:inputType="textMultiLine" 
        android:background="@color/yellow">

        <requestFocus />
    </EditText>

</RelativeLayout>

当我点击列表项时,onListItemClick方法不起作用。但是当我从row.xml中删除按钮时,它可以工作。任何人都可以帮助我。谢谢。

3 个答案:

答案 0 :(得分:8)

LinearLayoutRelativeLayout

中使用此属性
android:descendantFocusability="blocksDescendants"

答案 1 :(得分:0)

onItemClick所述onClick的子视图,您不能同时拥有ListViewButtonhereonItemClick已启用焦点并点击,这将导致{{1}}无法触发。

答案 2 :(得分:0)

我认为问题的原因是给予imageButtons的布局权重。因此,尝试为线性布局中的所有视图赋予权重,并将weightSum属性赋予linearLayout本身。

clickListener不工作的原因我觉得ImageButton在行的整个宽度上都是自己封装的,而且该项不再具有侦听器代码可以执行的空间。