单击列表项时隐藏 AlertDialog

Jac*_*ava 1 android android-alertdialog

我创建了TextView一个带有选项的警报对话框和一个列表。用户可以从列表中选择一项,也可以使用EditText.

问题是alertDialog只有当我给按钮添加新的时才会隐藏,而不是当我点击列表中的一个项目时。

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final LayoutInflater inflater = getLayoutInflater();
    final View dialogGroup = inflater.inflate(R.layout.select_group_layout, null);
    final EditText newGroup = dialogGroup.findViewById(R.id.new_group);
    final ListView listView = dialogGroup.findViewById(R.id.groups_list);


    listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list));
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass());
        }
    });

    builder.setView(dialogGroup)
            .setTitle(R.string.departments_txt)
            .setPositiveButton("Añadir", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    contactDepartment = newGroup.getText().toString();
                    HelperTools.showInfo("Selected group: " + contactDepartment, getClass());
                }
            });

    if (list.size() != 0) {
        builder.create();
        builder.show();
    }
Run Code Online (Sandbox Code Playgroud)

当他们选择 ListView 项目时如何隐藏 AlertDialog?

谢谢。

编辑

最终代码:

    final AlertDialog builder = new AlertDialog.Builder(this).create();
    final LayoutInflater inflater = getLayoutInflater();
    final View dialogGroup = inflater.inflate(R.layout.select_group_layout, null);
    final EditText newGroup = dialogGroup.findViewById(R.id.new_group);
    final ListView listView = dialogGroup.findViewById(R.id.groups_list);


    listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list));
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass());
            builder.dismiss();
        }
    });

    builder.setView(dialogGroup);
    builder.setTitle(R.string.departments_txt);
    builder.setButton(Dialog.BUTTON_POSITIVE, "Añadir", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            contactDepartment = newGroup.getText().toString();
            HelperTools.showInfo("Selected group: " + contactDepartment, getClass());
        }
    });

    if (list.size() != 0) {
        builder.show();
    }
Run Code Online (Sandbox Code Playgroud)

sha*_*mar 5

添加 builder.dismiss(); 单击列表视图中的项目后。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
        HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass());
        builder.dismiss();
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑

像这样创建AlterDialog

final AlertDialog builder = new AlertDialog.Builder(this).create();
Run Code Online (Sandbox Code Playgroud)

显示对话框

builder.show();
Run Code Online (Sandbox Code Playgroud)

取消对话

builder.dismiss();
Run Code Online (Sandbox Code Playgroud)