Spinner OnItemSelectedListener

大城市里の小女人 提交于 2019-12-19 07:29:07

问题


I can't find an example of how to do this in mono.

Any help?

Edit: Added code

foreach (equip item in list)
   {
        tr = new TableRow(this);

        sp = new Spinner(this);
        sp.LayoutParameters = lp2;
        sp.Adapter = adapter;                                  
        sp.ItemSelected += new EventHandler<ItemEventArgs>(spinner_ItemSelected());
        sp.SetSelection(Convert.ToInt32(item.status));
        tr.AddView(sp);
   }

private void spinner_ItemSelected(object sender, ItemEventArgs e)
    {
        Spinner spinner = (Spinner)sender;

        string toast = string.Format ("You selected {0}", spinner.GetItemAtPosition (e.Position));
        Toast.MakeText (this, toast, ToastLength.Long).Show ();
    }

回答1:


In Mono for Android a lot of listener interfaces have been translated to C# events, including this one. In this case you can hook into the ItemSelected event instead of having to create a listener. Xamarin has a full example of using a spinner available here.

Edit:

Based on your request to differentiate when the spinner value has actually changed, you can do something like:

int initialSpinnerPosition = spinner.SelectedItemPosition;
spinner.ItemSelected += (sender, args) =>
                        {
                            if (args.Position != initialSpinnerPosition)
                            {
                                // do stuff
                            }
                        };



回答2:


you can use the tag like

bool userClick = false;

spinner.ItemSelected += (sender, e) => {
            if(userClick) {
                --- do stuff
            }
            userClick = true;
        };

When you create/update the spinners adapter based on a SQL Data

userClick = false;


来源:https://stackoverflow.com/questions/8826875/spinner-onitemselectedlistener

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!