今天在做demo时,需要设置ListView的item的长按和点击事件,OnItemLongClickListener和OnItemClickListener,然而点击事件可以实现,但是在长按操作时会同时触发点击事件(长按和点击冲突),然后查看了一下Android的相关源码,可以看到系统是优先相应clicklisener的,他是没有返回值的的。而对于OnItemLongClickListener是有一个返回值标识。对于一次长按操作,如果返回false,则2个lisener都会相应,如果返回true则系统只处理长按事件。
因此,想要自己的OnItemLongClickListener长按事件生效,需要将返回值设为true。
@Override public void onBindViewHolder(final MyHodler3 holder, final int position) { holder.tImage=list.get(position); Glide.with(context).load(new File(list.get(position).getPath())). override(100, 100) .centerCrop().into(holder.imageView); if (onItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnItemClick(holder.itemView, position); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { onItemClickListener.OnItemLongClick(holder.itemView, position); return true; } }); }