Android OnClickEvents自定义列表视图

Android OnClickEvents自定义列表视图,android,android-listview,android-adapter,Android,Android Listview,Android Adapter,如何处理自定义listrow上的onclick事件?处理适配器上的事件是唯一/最佳选项吗?如果要单击列表行中的不同项目,最好在一行中的视图上定义不同的onClickListener,否则最好使用onItemClickListener如果要单击列表行中的不同项目,最好在一行的视图上定义不同的onClickListener,否则最好使用onItemClickListener您应该覆盖OnListener单击: protected void onListItemClick(ListView l, Vi

如何处理自定义listrow上的onclick事件?处理适配器上的事件是唯一/最佳选项吗?

如果要单击列表行中的不同项目,最好在一行中的视图上定义不同的onClickListener,否则最好使用onItemClickListener

如果要单击列表行中的不同项目,最好在一行的视图上定义不同的onClickListener,否则最好使用onItemClickListener

您应该
覆盖
OnListener单击

protected void onListItemClick(ListView l, View v, int position, long id) {
}

position
参数在
适配器中保持
对象的位置。因此,您可以使用它来检索它并进行计算

您应该
覆盖
onListItem单击

protected void onListItemClick(ListView l, View v, int position, long id) {
}

position
参数在
适配器中保持
对象的位置。因此,您可以使用它来检索它并进行计算

您可以对ListView对象使用onItemClickListener,但要注意,如果列表项(edittext,button…)中有可聚焦的对象,则不会再因为这些对象而通知此侦听器。如果要将侦听器的引用传递给适配器,则应将其作为弱引用传递。

您可以将onItemClickListener用于ListView对象,但请注意,如果列表项中有可聚焦的对象(edittext,button…),则由于这些对象,将不再通知此侦听器。如果要将侦听器的引用传递给适配器,则应将其作为弱引用传递。

是的,但我必须在适配器的getView中执行此操作,对吗?我曾经将侦听器传递给适配器,在getView中为每个rowpass listener to adapter设置listener to views?抱歉,我误解了这一部分,我的意思是您可以直接在adapter中定义listener,但是,有时adapter没有足够的数据,所以应该从其他类(如activityyep)传入,但我必须在适配器的getView中执行此操作,对吗?我曾经将侦听器传递给适配器,并在getView中为每个行将侦听器设置为视图将侦听器传递给适配器?抱歉,我误解了这一部分我的意思是,您可以直接在适配器中定义侦听器,但是,有时适配器没有足够的数据,因此,它应该从其他类(如Activity)传入,但例如,我正在尝试处理listrow中的imageview(它有几个其他小部件)上的单击。position返回listview的位置,我不能将其用作ImageView的参考。是的,您是对的。如果您需要更细粒度的控件,您应该在需要管理触摸的每个视图上添加onClickLister。为了做到这一点,您应该有自己的适配器,但例如,我正在尝试处理listrow中的imageview(它有几个其他小部件)上的单击。position返回listview的位置,我不能将其用作ImageView的参考。是的,您是对的。如果您需要更细粒度的控件,您应该在需要管理触摸的每个视图上添加onClickLister。为了做到这一点,您应该有自己的适配器