首页 > 解决方案 > OnItemLongClickListener 在释放按钮时也会运行 OnItemClickListener

问题描述

它使用函数 OnItemLongClickListener 但它也在释放按钮时运行 OnItemClickListener

    lv_driver.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {

            builder = new AlertDialog.Builder(MyActivity.this);
            builder.setTitle("Be carefull ");
            builder.setMessage("Do you want to delete?");
            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    delData(i);
                }
            });
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialogInterface.dismiss();
                }
            });

            builder.show();

            return false;
        }
    });

    lv_driver.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            Toast.makeText(MyActivity.this, "OnItemclick show ",
                    Toast.LENGTH_SHORT).show();
        }
    });

}

当按住按钮时,它会显示对话框确认删除,但当释放按钮时,它会显示来自 toast 的文本“OnItemclick show”。如何解决?

标签: javaandroid

解决方案


与其 在它return true;中返回 false ,不如setOnItemLongClickListener说它必须做到这一点

改变这个

 lv_driver.setOnItemLongClickListener(new 
 AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, 
     int i, long l) {

        builder = new AlertDialog.Builder(MyActivity.this);
        builder.setTitle("Be carefull ");
        builder.setMessage("Do you want to delete?");
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                delData(i);
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        builder.show();

        return false;
    }
});

对此

     lv_driver.setOnItemLongClickListener(new 
     AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, 
        int i, long l) {

        builder = new AlertDialog.Builder(MyActivity.this);
        builder.setTitle("Be carefull ");
        builder.setMessage("Do you want to delete?");
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                delData(i);
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        builder.show();

        return true;
    }
});

推荐阅读