列表视图与复选框问题

时间:2012-02-14 13:30:42

标签: android listview checkbox

我有一个ListView,每行为一个包含CheckBoxTextView RelativeLayout的{​​{1}}的xml充气。 问题是我无法弄清楚如何将onClick事件从复选框传递回后一行。 我想实现这种行为:用户按下复选框,按下整个列表行。如果我为每一行android.R.layout.simple_list_item_multiple_choice充气,我看到了这种行为,但如果没有这种特定于Android的布局,我无法弄清楚如何做到这一点。

有人可以给我一个想法或方向吗?

以下是代码:

Listview:

<ListView
    android:id="@+id/include_sent_list_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:cacheColorHint="@color/white"
    android:layout_alignParentTop="true"/>

每行充气的xml:

<RelativeLayout 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

<CheckBox
        android:id="@+id/checked_radio_button"
        android:layout_width="50dp"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:focusable="false"
        />
<TextView
        android:id="@+id/account_number_text"
        android:layout_width="100dp"
        android:layout_height="fill_parent"
        style="@style/config_simple_small_text_view_style"
        android:paddingTop="15dp"
        android:layout_toRightOf="@id/checked_radio_button"

        />
<TextView
        android:id="@+id/account_name_text"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        style="@style/config_simple_small_text_view_style"
        android:paddingTop="15dp"
        android:layout_toRightOf="@id/account_number_text"/>

</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

Checkbox消耗了List项的焦点。您需要在布局文件中设置它:

<!-- Must make this non-focusable otherwise it consumes  -->  
<!-- events intended for the list item (i.e. long press) -->
<CheckBox
    android:id="@+id/item_entry_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:focusable="false"
    />