android - 带有自定义适配器的多项选择 AlertDialog

标签 android android-alertdialog android-arrayadapter multiple-choice

我正在尝试创建一个带有多选选项的 AlertDialog。我试过 setMultiChoiceItems但我有一个ArrayList<Category>而不是 CharSequence所以我尝试使用适配器。

setAdapter 的问题是当我选择一个项目时它会关闭对话窗口。我想要的是选择项目,然后点击确定按钮以查看选择了哪些项目。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Pick a color");
        ArrayAdapter<Category> catsAdapter = new ArrayAdapter<Category>(this, android.R.layout.select_dialog_multichoice,this.categories);
        builder.setAdapter(catsAdapter, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {

            }
        });
        builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                //do something  
               }                
        });;

        AlertDialog alert = builder.create();
        alert.show();

最佳答案

不幸的是,似乎没有一种不调用 setMultiChoiceItems() 就可以打开 AlertDialog 的多选模式的简单方法。

但是,您可以设置一个适配器,然后在包含的 ListView 本身中打开多选模式。

final AlertDialog dialog = new AlertDialog.Builder(getActivity())
    .setTitle("Title")
    .setAdapter(yourAdapter, null)
    .setPositiveButton(getResources().getString(R.string.positive), null)
    .setNegativeButton(getResources().getString(android.R.string.cancel), null)
    .create();

dialog.getListView().setItemsCanFocus(false);
dialog.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
dialog.getListView().setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        // Manage selected items here
        System.out.println("clicked" + position);
        CheckedTextView textView = (CheckedTextView) view;
        if(textView.isChecked()) {

        } else {

        }
    }
});

dialog.show();

关于android - 带有自定义适配器的多项选择 AlertDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932832/

相关文章:

android - 如何处理自定义警报对话框的外部点击?

java - Android 显示 AlertDialog,无论用户 Activity 如何

java - 如果字符串包含双引号,则搜索 SQLite 表

android - 使用 .gif 的动画启动画面

Android 谷歌驱动器文件更改监听器不工作

java - 数组适配器 : Remove by Index

java - 我的 adapter.notifyDataSetChanged() 不工作

Android 无法解析符号 getFragmentManager()

android - 带超时的 AlertDialog

java - ListView 无法正确显示自定义数组适配器?