自定义列表单击复选框

时间:2009-05-21 21:43:30

标签: android checkbox android-listview android-viewbinder

我使用ListActivityCursor填充SimpleCursorAdapter,当点击其中一个列表项时,ViewBinder启动另一项活动。我也在使用CheckBox对数据进行自定义转换。

我想在列表中的每一行添加CheckBox,因此我更改了视图并添加了一个重力正确的CheckBox

添加onListItemClick已删除了点击项目的功能。当您按下列表项时,不再调用我在ListActivity中重写的CheckBox方法。删除CheckBox修复此问题。这是为什么?

另外,如果单击列表项的主要部分但是在选中项目中的onCheckedChangedListener时还具有其他功能,如何设置列表以便继续执行我所需的功能?是否设置{{1}}工作或是否为列表中的每个项目重复使用相同的视图实例?

2 个答案:

答案 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"