如何将复选框添加到 ListActivity 而不会丢失 onListItemClick 功能?
Posted
技术标签:
【中文标题】如何将复选框添加到 ListActivity 而不会丢失 onListItemClick 功能?【英文标题】:How can I add a checkbox to a ListActivity and not lose onListItemClick functionality? 【发布时间】:2011-04-06 10:20:15 【问题描述】:我有一个 ListActivity 按预期工作。单击列表项时,应用程序会正确响应。我想在屏幕最右侧的每个列表项旁边添加一个复选框。当我试图通过更新 XML(见下文)来做到这一点时,我失去了 onListItemClick 功能。当我点击一个列表项时,什么也没发生。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<TableLayout
android:id="@+id/table1"
android:layout_
android:layout_
android:stretchColumns="1">
<TableRow>
<TextView android:id="@+id/tvProduct"
android:layout_
android:layout_
android:textSize="20sp"
android:paddingLeft="10sp"
android:paddingRight="10sp" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<TextView android:id="@+id/tvPrice"
android:layout_
android:layout_
android:paddingLeft="10sp"
android:paddingRight="10sp"
android:textColor="#606060" />
</LinearLayout>
</LinearLayout>
我正在尝试在 tvProduct 对象旁边添加复选框。
感谢任何帮助。
【问题讨论】:
【参考方案1】:当 ListView 有可聚焦(可点击)的子视图时,它本身会失去可聚焦性。您可以通过在 ListView 内单击来拥有一个复选框(按钮等),或者让整行都可单击。
如果您尝试允许用户选择多行并在复选框中显示选择状态,您可以使用choiceModeCHOICE_MODE_MULTIPLE。
这是一个正在使用的example。
【讨论】:
谢谢。这正是我希望它看起来的样子,但我认为功能不是我想要的。用户将有 3 个选项卡,每个选项卡都会生成一个 ListActivity。第一个选项卡将包含未选中的值,第二个是选中的值,第三个是所有值。当一个复选框被选中时,我希望该工具将其移动到正确的选项卡(选中或未选中)。【参考方案2】:在getview方法中的adapter中,设置checkbox使用checkbox.setFocusable(false)和checkbox.setFocusableInTouchMode(false)。您仍然可以单击复选框,但单击其他任何地方都会获取列表项。两者都工作正常。
我知道已经有了答案,但这在过去对我有用,而且很容易实现,所以我想添加它。
【讨论】:
以上是关于如何将复选框添加到 ListActivity 而不会丢失 onListItemClick 功能?的主要内容,如果未能解决你的问题,请参考以下文章
列表数据更改时更新Android ListActivity?