自定义列表单击复选框
Posted
技术标签:
【中文标题】自定义列表单击复选框【英文标题】:Custom list clicking with checkboxes 【发布时间】:2010-10-28 01:50:47 【问题描述】:我使用SimpleCursorAdapter
从Cursor
填充了ListActivity
,当其中一个列表项被单击时,它会启动另一个活动。我还使用ViewBinder
对数据进行一些自定义转换。
我想为列表中的每一行添加一个CheckBox
,因此我更改了视图并添加了一个CheckBox
,重力正确。
添加CheckBox
删除了点击项目的能力。当您按下列表项时,不再调用我在 ListActivity
中覆盖的 onListItemClick
方法。删除 CheckBox
可以解决此问题。这是为什么呢?
另外,如果单击列表项的主要部分但在选中项目中的CheckBox
时具有附加功能,我如何设置列表以便它继续执行我所需的功能?设置onCheckedChangedListener
会起作用,还是会为列表中的每个项目重复使用相同的视图实例?
【问题讨论】:
【参考方案1】:正如here 所解释的,点击监听器仅在没有其他视图为focusable
时才起作用。将您的 CheckBox
设置为 focusable="false"
应该可以解决问题:
<CheckBox android:focusable="false" />
【讨论】:
【参考方案2】:看起来SimpleCursorAdapter
对于我想要实现的目标来说太原始了。
我已经切换到实现CursorAdapter
并在我的newView
方法的实现中使用LayoutInflater
返回一个新视图。
public View newView(Context context, Cursor cursor, ViewGroup parent)
return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
在 bindView 中,我将自定义 OnClickListener
设置为我的主 LinearLayout
,然后将另一个 OnCheckedChangeListener
设置为 CheckBox
。
为了让这一切看起来正确,我必须将 LinearLayout
的背景设置为 android 的 menuitem drawable:
android:background="@android:drawable/menuitem_background"
【讨论】:
以上是关于自定义列表单击复选框的主要内容,如果未能解决你的问题,请参考以下文章