从下一个屏幕返回时,Picker不绑定旧的选定值?

时间:2016-04-28 09:28:06

标签: xamarin.android spinner xamarin.forms dropdown picker

我正在为Android应用程序开发xamarin.forms。我在第一个屏幕上创建了一个选择器,并在微调器和自定义渲染器的帮助下自定义它。它看起来很好并且工作正常。

但是当我在第二个屏幕上移动并且如果我从第二个屏幕返回到第一个屏幕时,选择器不会显示旧的选定值。它仅显示默认的第一个值。

我试图找到问题,当用户回到第一个屏幕时,我得到了,选择器元素索引的位置为0.我不知道为什么显示0。

我在自定义渲染器中使用以下代码:

 Picker picker;
    Spinner spinner;
    IList<string> scaleNames;
    ArrayAdapter<string> scaleAdapter;
    protected override void OnElementChanged (ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged (e);
        if (e.OldElement != null || Element == null) {
            return;
        }
        picker = e.NewElement;
        scaleNames = e.NewElement.Items;
        spinner = new Spinner (this.Context);

        spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (spinner_ItemSelected);

        scaleAdapter = new  ArrayAdapter<string> (this.Context, Resource.Layout.view_spinner_item, scaleNames);
        scaleAdapter.SetDropDownViewResource (Android.Resource.Layout.SimpleSpinnerDropDownItem);
        spinner.SetBackgroundResource (Resource.Drawable.pickerControl);
        spinner.Adapter = scaleAdapter;

        base.SetNativeControl (spinner);
    }

    private void spinner_ItemSelected (object sender, AdapterView.ItemSelectedEventArgs e)
    {
        picker.SelectedIndex = (e.Position);
        if (picker.SelectedIndex != 0) {
            scaleAdapter = new  ArrayAdapter<string> (this.Context, Resource.Layout.view_spinner_selected_item, scaleNames);
            scaleAdapter.SetDropDownViewResource (Android.Resource.Layout.SimpleSpinnerDropDownItem);
            //spinner.Background = this.Resources.GetDrawable (Resource.Drawable.pickerControl);
            spinner.SetBackgroundResource (Resource.Drawable.pickerControl);
            spinner.Adapter = scaleAdapter;
            spinner.SetSelection (picker.SelectedIndex);

        } 

    }

你知道如何设置选择器的值,这样当我回到屏幕时它会显示相同的值。

0 个答案:

没有答案