ListView中ItemLongClick与ItemClick事件并存问题

在日常的开发中,ListView中的item中通常会注册事件,来进行相应的交互,ListView也通常会同时注册,ItemLongClick与ItemClick方法。今天来讲解一下 ListView中ItemLongClick与ItemClick事件并存问题。

ItemLongClick 与 ItemClick 并存

在ListView中注册 ItemLongClick 方法的默认实现如下所示:

1
2
3
4
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return false;
}

其中onItemLongClick 中默认返回的false,false的含义是: 将事件传递下去,简单的说,onItemLongClick 执行方法后,则会执行ItemClick回调函数,如下图所示:
错误的
将onItemLongClick 方法返回true,则会中断事件的传递,将不会执行ItemClick回调函数,
代码如下:

@Override
  public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
      return true;
  }

如下图所示:
正确的