100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ListView的长按事件和点击事件冲突的解决办法

ListView的长按事件和点击事件冲突的解决办法

时间:2023-03-01 10:47:57

相关推荐

ListView的长按事件和点击事件冲突的解决办法

需求是这样的:listView中点击item 跳转到一个activity,长按item可以对这条item进行删除操作,在删除前会弹出dialog(确认删除对话框)。

但是在开发过程中发现,当长按某个item时,先弹出dialog,然后就跳转到目标activity。也就是说,长按事件和点击事件同时发生了!我是第一次接触长按事件,所以一头雾水,确实也不知道问题出在哪里。在网上查找后得知,长按事件中的匿名内部类中的长按方法会返回一个布尔值,应该返回true。

lv_process.setOnItemLongClickListener(new OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView<?> parent, View view,

int position, long id) {

Toast.makeText(this,"人生到处何所似,应似飞鸿踏雪泥。",Toast.LENGTH_SHORT).show();

return true;

}

});

而我之前返回的是false,修改成true后,确实把问题解决了。

然后还是有点不太懂,于是查了下源码,发现OnItemLongClickListener这个借口中只有一个方法并且返回值是boolean类型:

/* @return true if the callback consumed the long click, false otherwise*/

boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id);

请大家注意上面这一行红色英文解释,意思是说,如果这个长按事件被消耗掉了,那么就返回true,如果没有被消耗掉,那么返回false.

那么反过来我觉得也成立,如果长按后进行了一些操作,但是返回false,那么程序会认为这个长按事件没有被消耗掉,因此会传递到点击事件那儿,然后完成跳转activity的动作。(这是我自己个人的猜测,做不得准,如果有不同观点的,可以评论或者私信告知在下哈,非常感谢!)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。