Android ListView和从项目中的子视图传播单击事件

Android ListView和从项目中的子视图传播单击事件,android,listview,Android,Listview,我有一个带有自定义项的列表视图-3个图像视图和一个文本视图。我调用了setItemsCanFocus(true),因此我可以使ImageView可单击。我目前正在使用SimpleAdapter填充视图 我想在单击其中一个子视图时触发AdapterView的onItemClick事件。onItemClickListener接收一个视图作为第二个参数,可用于标识单击了哪个子视图。坦率地说,我原本以为这是默认行为,但不幸的是,事实并非如此 有没有办法在不直接破坏封装的情况下实现这种行为(即创建一个包含

我有一个带有自定义项的列表视图-3个图像视图和一个文本视图。我调用了
setItemsCanFocus(true)
,因此我可以使ImageView可单击。我目前正在使用SimpleAdapter填充视图

我想在单击其中一个子视图时触发AdapterView的
onItemClick
事件。
onItemClickListener
接收一个视图作为第二个参数,可用于标识单击了哪个子视图。坦率地说,我原本以为这是默认行为,但不幸的是,事实并非如此

有没有办法在不直接破坏封装的情况下实现这种行为(即创建一个包含对其视图引用的适配器)


处理列表项中视图中事件的公认方式是什么?如何避免适配器对ListView了解太多?

不幸的是,您必须在对单个子项使用onItemClick()或onClick()之间进行选择。但是,一种方法是使每个项目的顶级视图可单击。

在xml中的listview上设置
android:addStatesFromChildren=“true”
会将子元素上的单击发送到连接到listview的
onItemClick
中的
onItemClick
方法。

右侧。因此,我只是通过向适配器注册
OnClickListener
并将其传递给每个子视图来打破封装。谢谢你的回答!我也遇到了同样的问题,但是setonitemclicklistener为我显示了nullpointer异常,并且对onListItemclick()没有任何反应。我想在子视图单击时单击按钮,每个按钮单击时执行不同的活动。@Delyan,@Romanguy-要帮助我理解解决方案,您需要在适配器类的newView()中创建OnClickListener?这意味着,如果屏幕上有10个列表项可见,newView()将被调用10次,10个onClickListener将被注册,每个可见项对应一个。我已经试过了,效果很好。但这是你真正的意思吗?