public virtual SimpleListDialogBuilder SetChoiceMode(AbsListViewChoiceMode choiceMode) { this.mode = choiceMode; return(this); }
protected override Builder Build(Builder builder) { string[] items = Items; string title = Title; if (!TextUtils.IsEmpty(title)) { builder.SetTitle(title); } if (!TextUtils.IsEmpty(NegativeButtonText)) { builder.SetNegativeButton(NegativeButtonText, (sender, e) => { foreach (ISimpleDialogCancelListener listener in CancelListeners) { listener.OnCancelled(mRequestCode); } Dismiss(); }); } //confirm button makes no sense when CHOICE_MODE_NONE if (Mode != AbsListViewChoiceMode.None) { string positiveButton = PositiveButtonText; if (TextUtils.IsEmpty(PositiveButtonText)) { //we always need confirm button when CHOICE_MODE_SINGLE or CHOICE_MODE_MULTIPLE positiveButton = GetString(Android.Resource.String.Ok); } switch (Mode) { case AbsListViewChoiceMode.Multiple: builder.SetPositiveButton(positiveButton, (sender, e) => { // prepare multiple results int[] checkedPositions = AsIntArray(CheckedItems); items = Items; string[] checkedValues = new string[checkedPositions.Length]; int i = 0; foreach (int checkedPosition in checkedPositions) { if (checkedPosition >= 0 && checkedPosition < items.Length) { checkedValues[i++] = items[checkedPosition]; } } foreach (IMultiChoiceListDialogListener listener in MutlipleDialogListeners) { listener.OnListItemsSelected(checkedValues, checkedPositions, mRequestCode); } Dismiss(); }); break; case AbsListViewChoiceMode.Single: builder.SetPositiveButton(positiveButton, (sender, e) => { // prepare single result int selectedPosition = -1; int[] checkedPositions = AsIntArray(CheckedItems); items = Items; foreach (int i in checkedPositions) { if (i >= 0 && i < items.Length) { //1st valid value selectedPosition = i; break; } } // either item is selected or dialog is cancelled if (selectedPosition != -1) { foreach (IListDialogListener listener in SingleDialogListeners) { listener.OnListItemSelected(items[selectedPosition], selectedPosition, mRequestCode); } } else { foreach (ISimpleDialogCancelListener listener in CancelListeners) { listener.OnCancelled(mRequestCode); } } Dismiss(); }); break; } } // prepare list and its item click listener items = Items; if (items != null && items.Length > 0) { AbsListViewChoiceMode mode = Mode; switch (mode) { case AbsListViewChoiceMode.Multiple: BuildMultiChoice(builder); break; case AbsListViewChoiceMode.Single: BuildSingleChoice(builder); break; case AbsListViewChoiceMode.None: BuildNormalChoice(builder); break; } } return(builder); }