Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java setOnItemLongClickListener在它之后调用setOnItemClickListener_Java_Android_Android Listview - Fatal编程技术网

Java setOnItemLongClickListener在它之后调用setOnItemClickListener

Java setOnItemLongClickListener在它之后调用setOnItemClickListener,java,android,android-listview,Java,Android,Android Listview,我有一个列表,我想让用户删除一个项目使用长点击和编辑时点击 问题是,如果用户想删除某个项目(长时间单击该项目),我的应用程序将打开删除确认消息,同时还会打开编辑确认消息 当用户长时间单击列表项时,如何仅打开delete(setOnItemLongClickListener)消息 // DELETE list.setOnItemLongClickListener((parent, view, position, arg3) -> { Contacts contacts = queu

我有一个列表,我想让用户删除一个项目使用长点击和编辑时点击

问题是,如果用户想删除某个项目(长时间单击该项目),我的应用程序将打开删除确认消息,同时还会打开编辑确认消息

当用户长时间单击列表项时,如何仅打开delete(setOnItemLongClickListener)消息

// DELETE
list.setOnItemLongClickListener((parent, view, position, arg3) -> {

    Contacts contacts = queue.get(position);

    AlertDialog.Builder adb=new AlertDialog.Builder(Read.this);
    adb.setTitle("Delete?");
    adb.setMessage("Are you sure you want to delete?");
    adb.setNegativeButton("Cancel", null);
    adb.setPositiveButton("Ok", (dialog, which) -> {

        deleteContact(Read.this, contacts.phone, contacts.name);

        mobileArray.remove(position);
        adapter.notifyDataSetChanged();

    });
    adb.show();

    return false;

});


// EDIT
list.setOnItemClickListener((parent, view, position, arg3) -> {

    Contacts contacts = queue.get(position);

    AlertDialog.Builder adb=new AlertDialog.Builder(Read.this);
    adb.setTitle("Edit?");
    adb.setMessage("Edit?");
    adb.setNegativeButton("Cancel", null);
    adb.setPositiveButton("Ok", (dialog, which) -> {

        Log.d("edit:", contacts.name + contacts.id + contacts.phone + contacts.email);

    });
    adb.show();


});

虽然我不认为这种方法本身是可行的,但您也许应该利用它来执行多个操作,以获得更好的用户体验

无论如何,一个可能的解决方案可能是存储两个警报对话框的私有实例,如下所示:

private AlertDialog clickDiag;

private void function(){
   AlertDialog.Builder adb=new AlertDialog.Builder(Read.this);
   clickDiag = adb.show();
}

现在已经存储了实例,对话框中有一个有用的函数:

clickDiag.isShowing();

我想你现在已经明白了,它可以用来检查某个特定对话框的一个或另一个实例是否可见,所以不要显示另一个,反之亦然。

只需将返回值改为true(source)@Ikazuchi哦,这似乎行得通。谢谢你的回答,我会努力的!谢谢你的回答。