我使用ListActivity
从Cursor
填充SimpleCursorAdapter
,当点击其中一个列表项时,ViewBinder
启动另一项活动。我也在使用CheckBox
对数据进行自定义转换。
我想在列表中的每一行添加CheckBox
,因此我更改了视图并添加了一个重力正确的CheckBox
。
添加onListItemClick
已删除了点击项目的功能。当您按下列表项时,不再调用我在ListActivity
中重写的CheckBox
方法。删除CheckBox
修复此问题。这是为什么?
另外,如果单击列表项的主要部分但是在选中项目中的onCheckedChangedListener
时还具有其他功能,如何设置列表以便继续执行我所需的功能?是否设置{{1}}工作或是否为列表中的每个项目重复使用相同的视图实例?
答案 0 :(得分:14)
正如here所述,只有在没有其他视图为focusable
时,点击侦听器才有效。将CheckBox
设置为focusable="false"
应该可以解决问题:
<CheckBox android:focusable="false" />
答案 1 :(得分:4)
看起来SimpleCursorAdapter
对于我想要实现的目标来说太原始了。
我已切换到实施CursorAdapter
并在我LayoutInflater
方法的实现中使用newView
返回新视图。
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"