public void Show(string title, List <GridItem> actions, enumPlace gravity) { AlertDialog ad = null; View customView = CrossCurrentActivity.Current.Activity.LayoutInflater.Inflate(Resource.Layout.CustomGridViewDialog, null); List <GridItem> correctActions = new List <GridItem>(); if (actions != null) { GridItem gridItem; foreach (var action in actions) { gridItem = new GridItem(); gridItem.Id = action.Id; gridItem.Title = action.Title; gridItem.ClickAction = () => { if (ad != null) { ad.Dismiss(); } action.ClickAction?.Invoke(); }; correctActions.Add(gridItem); } } (customView.FindViewById <GridView>(Resource.Id.gridview)).Adapter = new GridAdapter(CrossCurrentActivity.Current.Activity, correctActions, gravity); AlertDialog.Builder builder = new AlertDialog.Builder(CrossCurrentActivity.Current.Activity); builder.SetTitle(title ?? ""); builder.SetView(customView); ad = builder.Show(); }
public Task <GridItem> ShowAsync(string title, List <GridItem> actions, enumPlace gravity) { TaskCompletionSource <GridItem> tcs = new TaskCompletionSource <GridItem>(); bool clicked = false; AlertDialog ad = null; View customView = CrossCurrentActivity.Current.Activity.LayoutInflater.Inflate(Resource.Layout.CustomGridViewDialog, null); List <GridItem> correctActions = new List <GridItem>(); if (actions != null) { foreach (var action in actions) { action.ClickAction = () => { clicked = true; if (ad != null) { ad.Dismiss(); } tcs.SetResult(action); }; correctActions.Add(action); } } (customView.FindViewById <GridView>(Resource.Id.gridview)).Adapter = new GridAdapter(CrossCurrentActivity.Current.Activity, correctActions, gravity); AlertDialog.Builder builder = new AlertDialog.Builder(CrossCurrentActivity.Current.Activity); builder.SetTitle(title ?? ""); builder.SetView(customView); builder.SetOnDismissListener(new OnDismissListener(() => { if (!clicked) { tcs.TrySetResult(null); } })); ad = builder.Show(); return(tcs.Task); }
public GridAdapter(Context context, IList <GridItem> items, enumPlace alignment) { this.context = context; this.items = items; this.alignment = alignment; }
public GridAdapter(Context context, IList <GridItem> items) { this.context = context; this.items = items; alignment = enumPlace.Center; }
public async Task <GridItem <T> > ActionsDialogAsync <T>(string title, List <GridItem <T> > actions, enumPlace gravity) { return(await customDialogService.ShowAsync(title, actions, gravity)); }