Как правильно связать ReactiveList со спиннером в Xamarin.Android с ReactiveUI - PullRequest
0 голосов
/ 21 мая 2018

Я прошел следующую ссылку Xamarin.Android и Spinner привязки с ReactiveUI и попытался привязать счетчик следующим образом.

вот мой класс ViewModel,

public class ExampleVM : ReactiveObject{
    ReactiveList<ExampleTypeResult> _list;
            public ReactiveList<ExampleTypeResult> ExampleList
            {
                get { return _list; }
                private set { this.RaiseAndSetIfChanged(ref _list, value); }
            }
    } 

И вот мой класс фрагмент,

public class ExampleFragment : ExampleBaseFragment<ExampleVM>{
private ReactiveList<ExampleTypeResult> ExampleList;
            Action<ReactiveList<ExampleTypeResult>> action =
                list =>
                {
                    var mItems = ExampleList.Select(n => n._Name).ToList();
                    var adater = new ArrayAdapter<string>(this.Activity, Android.Resource.Layout.SimpleSpinnerItem, mItems);
                    adater.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
                    FragmentExampleSpinner.Adapter = adater;
                };

         this.Bind(this.ViewModel, vm => vm.ExampleList, v => v.ExampleList, action)
        .DisposeWith(SubscriptionDisposables);
}

но это не сработало без ошибок даже.Я хочу знать, как мы можем правильно связать реактивный список с Android.Widget.Spinner?

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете попытаться создать свойство ArrayAdapter в вашей ViewModel.Затем используйте этот массив-адаптер, чтобы связать счетчик.Например:

public class TheViewModel : ReactiveObject
{
    private ArrayAdapter theadapter;
    public ArrayAdapter Theadapter
    {
        get { return this.theadapter; }
        set { this.RaiseAndSetIfChanged(ref this.theadapter, value); }
    }
}

И установите адаптер в действие:

        var mItems = new ReactiveList<string>();
        mItems.Add("AAA");
        mItems.Add("BBB");
        mItems.Add("CCC");
        mItems.Add("DDD");
        mItems.Add("EEE");
        mItems.Add("FFF");
        ViewModel.Theadapter = new ArrayAdapter(this, Resource.Layout.SimpleSpinnerItem, mItems);
        this.OneWayBind(this.ViewModel, vm => vm.Theadapter, v => v.TheSpinner.Adapter);
...