如何向ListActivity添加复选框而不丢失onListItemClick功能?

时间:2010-08-31 18:12:32

标签: android

我有一个ListActivity按预期工作。单击列表项时,应用程序会正确响应。我想在屏幕的最右侧添加一个复选框,旁边是每个列表项。当我尝试通过更新XML(见下文)来做到这一点时,我丢失了onListItemClick功能。当我点击列表项时没有发生任何事情。


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TableLayout
        android:id="@+id/table1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1">

        <TableRow>
            <TextView android:id="@+id/tvProduct" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:paddingLeft="10sp"
                android:paddingRight="10sp" />
        </TableRow>

    </TableLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView android:id="@+id/tvPrice" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10sp"
            android:paddingRight="10sp"
            android:textColor="#606060" />

    </LinearLayout>

</LinearLayout>

我正在尝试添加tvProduct对象旁边的复选框。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

当ListView具有可聚焦(可点击)的孩子时,它本身会失去焦点。您可以通过在ListView内部单击可以选中复选框(按钮等),也可以使整个行可单击。

如果您尝试允许用户选中多行并在复选框中显示选择状态,则可以使用choiceMode CHOICE_MODE_MULTIPLE。

以下是正在使用的example

答案 1 :(得分:1)

在getview方法的适配器中,设置复选框使用checkbox.setFocusable(false)和checkbox.setFocusableInTouchMode(false)。您仍然可以单击复选框,但单击其他​​任何位置都会获得列表项。两者都很好。

我知道已经有了答案,但这对我来说过去很容易实现,所以我想添加它。