コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public GridAdapter(Context context, IList <GridItem> items, enumPlace alignment)
 {
     this.context   = context;
     this.items     = items;
     this.alignment = alignment;
 }
コード例 #4
0
 public GridAdapter(Context context, IList <GridItem> items)
 {
     this.context = context;
     this.items   = items;
     alignment    = enumPlace.Center;
 }
コード例 #5
0
 public async Task <GridItem <T> > ActionsDialogAsync <T>(string title, List <GridItem <T> > actions, enumPlace gravity)
 {
     return(await customDialogService.ShowAsync(title, actions, gravity));
 }