AlertDialog с флажком В android

Я новичок в Android. Я работаю над приложением, в котором мне нужно показать диалог, в котором пользователь может выбрать более одного элемента. Для этого я хочу добавить флажок к каждому элементу в диалоговом окне.

Я читаю следующие сообщения в StackOverflow:

Как добавить флажок в диалоговом окне предупреждения и

Диалоговое окно Android Checkbox (Easy)

В одном из этих сообщений описывается, как создавать XML, определяющие флажок, помимо раздувания диалога, но я не мог заставить его работать.

Solutions Collecting From Web of "AlertDialog с флажком В android"

Добавление флажка в AlertDialog хорошо объяснено в блоге с примером AlertDialog с CheckBox на Android

Вы можете посетить блог AlertDialog With CheckBox В Android для более подробной информации, а следующее взято из того же блога

final CharSequence[] items = {" Easy "," Medium "," Hard "," Very Hard "}; // arraylist to keep the selected items final ArrayList seletedItems=new ArrayList(); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("Select The Difficulty Level") .setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { if (isChecked) { // If the user checked the item, add it to the selected items seletedItems.add(indexSelected); } else if (seletedItems.contains(indexSelected)) { // Else, if the item is already in the array, remove it seletedItems.remove(Integer.valueOf(indexSelected)); } } }).setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // Your code when user clicked on OK // You can write the code to save the selected item here } }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // Your code when user clicked on Cancel } }).create(); dialog.show(); 

Ответ может быть лучше! Второй аргумент в alerBuilder.setMultiChoiceItems() – это логический массив, используемый для идентификации отмеченных элементов перед отображением диалога и определения отмеченных элементов после нажатия кнопки «Положительная кнопка», поэтому код может выглядеть следующим образом:

 AlertDialog.Builder alerBuilder = new AlertDialog.Builder(this); final DBHelper dbHelper = new DBHelper(this); final List<MeasurementDevice> totalDeviceList = dbHelper.getAllDevices(); String[] deviceNameArr = new String[totalDeviceList.size()]; final boolean[] selectedItems = new boolean[totalDeviceList.size()]; for(int i = 0 ; i < deviceNameArr.length ; i++){ deviceNameArr[i] = totalDeviceList.get(i).getName(); selectedItems[i] = false; for(int j = 0 ; j < measurementDeviceArrayList.size() ; j++){ if(measurementDeviceArrayList.get(j).getId() == totalDeviceList.get(i).getId()){ selectedItems[i] = true; break; } } } alerBuilder.setMultiChoiceItems(deviceNameArr,selectedItems,new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean b) { Log.e("CheckStatus",String.valueOf(b)); } }).setPositiveButton(R.string.ok_ww,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int ii) { for(int i = 0 ; i < selectedItems.length ; i++) Log.e("Sizzz",String.valueOf(selectedItems[i])); } }).setCancelable(false).setTitle(R.string.add_device).create().show(); 

Вы можете найти лучшие примеры с объяснениями здесь