【问题标题】:disable onClick on recyclerView when is OnlongClick option当是 OnlongClick 选项时禁用 onClick on recyclerView
【发布时间】:2016-07-21 11:12:20
【问题描述】:

当我点击LongClick时如何禁用onClick? 这是来自recyclerView 的代码,当我尝试长按时,我只是看到正常的点击只是像地狱一样发送垃圾邮件。

 holder.title.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(context, "To clear your recomendations, press for few seconds. ", Toast.LENGTH_SHORT).show();
                    }
                });
                holder.title.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        clearPreferences(R.string.preferences_reminder);
                        Toast.makeText(context, "Recomendations cleared.", Toast.LENGTH_SHORT).show();


                        return true;
                    }
                });

【问题讨论】:

  • 您在活动或适配器中使用此代码的位置
  • 我在自定义适配器中使用此代码
  • @Rodriquez 你可以使用 OnTouchListener 阻止它
  • 嘿感谢您的回复,我想我不能使用它,因为它适用于电视。完全没有触摸,只需专注。

标签: java android television


【解决方案1】:

@Nikhil PV 的答案是完美的。
如果有必要同时收听onLongClickonClick, 这是另一种方法:

例子:

@Override
public boolean onLongClick(View view) {
    //return value true to make sure only onLongClick is executed without triggering normal onClick
    return true; // or false
}

return true 表示事件被消费。它被处理。不会通知其他点击事件。
return false 表示该事件未被消费。任何其他点击事件将继续收到通知。

所以要确保onClickonLongClick 不会同时触发,return true 来自onLongClick 事件。
请不要对此投反对票,我只是想帮助正在寻找这个特定答案的人。

【讨论】:

    【解决方案2】:

    添加这一行

    holder.title.setOnClickListener(null);
    

    【讨论】:

    • 是的,我更改了它,但是当我单击 LongClick 时,我从 onClick 收到垃圾邮件
    • 添加这一行 holder.title.setOnClickListener(null);
    猜你喜欢
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多