自定义列表单击复选框
我使用 SimpleCursorAdapter
从 Cursor
填充了 ListActivity
,当单击其中一个列表项时,该适配器启动另一个活动。 我还使用 ViewBinder 来对数据进行一些自定义转换。
我想向列表中的每一行添加一个 CheckBox
,因此我更改了视图并添加了一个重力向右的 CheckBox
。
添加 CheckBox
删除了单击项目的功能。 当您按下列表项时,不再调用我在 ListActivity
中重写的 onListItemClick
方法。 删除 CheckBox
可以解决此问题。 为什么是这样?
另外,如何设置列表,以便在单击列表项的主要部分时它继续执行我所需的功能,但在选中项中的 CheckBox
时具有附加功能? 设置 onCheckedChangedListener
是否有效,或者列表中的每个项目是否重复使用相同的视图实例?
I've populated a ListActivity
from a Cursor
using SimpleCursorAdapter
that starts another activity when one of the list items have been clicked. I'm also using ViewBinder
to do some custom transformation of the data.
I want to add a CheckBox
to each row in the list so I've changed the view and added a CheckBox
with gravity right.
Adding the CheckBox
has removed the ability to click on the items. The onListItemClick
method I was overriding in ListActivity
is no longer called when you press on a list item. Removing the CheckBox
fixes this. Why is this?
Also, how can I set up the list so that it continues to perform my required functionality if the main part of the list item is clicked but have additional functionality when the CheckBox
in the item is checked? Will setting a onCheckedChangedListener
work or is the same view instance reused for each item in the list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如此处所解释的,点击监听器仅在没有其他监听器的情况下才起作用视图
可聚焦
。 将CheckBox
设置为focusable="false"
应该可以解决问题:As explained here, the click listener only works if no other view is
focusable
. Setting yourCheckBox
tofocusable="false"
should do the trick:看起来
SimpleCursorAdapter
对于我想要实现的目标来说太原始了。我已改用实现
CursorAdapter
并在newView
方法的实现中使用LayoutInflater
返回一个新视图。然后,在 bindView 中,我将一个自定义
OnClickListener
设置为我的主LinearLayout
,然后将另一个OnCheckedChangeListener
设置为CheckBox
。为了让这一切看起来正确,我必须将 LinearLayout 的背景设置为 android 的可绘制菜单项:
Looks like
SimpleCursorAdapter
is too primitive for what I wanted to achieve.I've switched to implementing
CursorAdapter
and returning a new view using theLayoutInflater
in my implementation of thenewView
method.In bindView I then set a custom
OnClickListener
to my mainLinearLayout
and then anotherOnCheckedChangeListener
to theCheckBox
.For all this to look right I had to set the
LinearLayout
's background to android's menuitem drawable: