释放按钮时,OnItemLongClickListener也会运行OnItemClickListener

时间:2018-09-17 19:05:10

标签: java android

它使用函数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();
        }
    });

}

按下按钮时,它显示对话框确认删除,但是当按下按钮时,它显示吐司中的文本“ OnItemclick show”。 如何解决?

1 个答案:

答案 0 :(得分:1)

只需return true;而不是在setOnItemLongClickListener中返回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 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;
    }
});