android中的listview当长按事件触发后怎么接着触发点击事件。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中的listview当长按事件触发后怎么接着触发点击事件。。。相关的知识,希望对你有一定的参考价值。

return需要修改
return true;
错了,好象是return false;
你试试吧
参考技术A 什么意思?

长按刷新列表后取消ListView上的点击事件

【中文标题】长按刷新列表后取消ListView上的点击事件【英文标题】:Cancel tap event on ListView after long pressing and refreshing list 【发布时间】:2018-05-26 08:13:10 【问题描述】:

我有一个OnLongClickListener 附加到我的列表项视图中的一个视图(不是ListView 本身)。即使我在onLongClick 回调中返回true,一旦手指离开屏幕,ListView 上的onItemClick 也会被调用。通常这不会发生,但长按会在适配器上触发notifyDataSetChanged,这似乎会重置某些状态并将触摸事件注册为新项目单击。

我想阻止这个额外的onItemClick 触发。我试图使视图无效并取消挂起的输入事件,但也没有成功。

【问题讨论】:

【参考方案1】:

这更像是一个 hacky 解决方法而不是解决方案,如果有人能提供更好的答案,我会很高兴。在我的onLongClick 回调中,我请求关注嵌入视图,然后在 500 毫秒后释放该焦点。这给了我想要的行为,但我宁愿不必依赖计时事件。

view.setOnLongClickListener(new OnLongClickListener() 
    @Override
    public boolean onLongClick(View v) 
        // ...
        adapter.notifyDataSetChanged();

        // Request focus to prevent another click event.
        view.setFocusable(true);
        view.requestFocus();

        // Release focus after a short delay.
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() 
            @Override
            public void run() 
                view.setFocusable(false);
            
        , 500);

        return true;
    
);

```

【讨论】:

【参考方案2】:

Source

请注意,上面示例中的 onClick() 回调没有返回值,但其他一些事件侦听器方法必须返回一个布尔值。原因取决于事件。对于少数这样做的人,原因如下:

onLongClick() - 这将返回一个布尔值来指示您是否已经消费了该事件并且不应该进一步携带它。也就是说,返回 true 表示您已经处理了该事件,它应该在这里停止;如果您还没有处理它,则返回 false 和/或事件应该继续到任何其他点击监听器。

【讨论】:

以上是关于android中的listview当长按事件触发后怎么接着触发点击事件。。。的主要内容,如果未能解决你的问题,请参考以下文章

ListView 长按动画

android 长按事件 和 长按弹出上下文菜单如何处理

android中给一个ListView添加长按事件后无法响应单击事件?

android listview上下滑动时为啥不触发点击事件

Android:为啥长按也会触发正常点击?

长按刷新列表后取消ListView上的点击事件