protected void setupMultiChoiceDialog(AlertDialog.Builder builder) { final List<ItemT> availableItems = getAvailableItems(); final ItemPrinter<ItemT> ip = getItemPrinter(); CharSequence[] items = new CharSequence[availableItems.size()]; boolean[] checked = new boolean[availableItems.size()]; for (int i = 0; i < availableItems.size(); ++i) { items[i] = ip.itemToString(getItemAt(i)); if (selectedItems.get(i) != null) { checked[i] = true; } else { checked[i] = false; } } builder.setMultiChoiceItems( items, checked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) selectedItems.put(which, getItemAt(which)); else selectedItems.delete(which); } }); }
protected void setupSingleChoiceDialog(AlertDialog.Builder builder) { final List<ItemT> availableItems = getAvailableItems(); final ItemPrinter<ItemT> ip = getItemPrinter(); CharSequence[] items = new CharSequence[availableItems.size()]; for (int i = 0; i < availableItems.size(); ++i) { items[i] = ip.itemToString(availableItems.get(i)); } int checked = -1; if (selectedItems.size() > 0) { checked = selectedItems.keyAt(0); selectedItems.put(checked, getItemAt(checked)); } builder.setSingleChoiceItems( items, checked, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { selectedItems.clear(); selectedItems.put(which, getItemAt(which)); } }); }