2017-06-02 28 views
1

我现在对于Spinner(MvxSpinner)现在有一个问题,对于Android(但后来我需要它也适用于iOS)。我有在spinner期间过滤像本周,上周,本月等。此过滤器我需要为我的api服务获取数据...我的问题是我想可能使用周期类型的枚举(或mb一些更好的解决方案?)是这样的:Xamarin Android Spinner(MvxSpinner)绑定语言资源和selecteditem

枚举PeriodTypes:

public enum PeriodTypes 
    { 
     Unknown = -1, 
     LastSevenDays = 0, 
     LastWeek = 1, 
     ThisWeek = 2 
    } 

我可以让这些PeriodTypes的枚举列表中,但我的问题是我必须微调串用的语言资源,但在SelectedPeriod我需要知道例如它的PeriodTypes.LastWeek并使用它从API服务获取数据,而不是像现在只是语言资源中的字符串...

我的问题是,如果我可以使用一些对象,我将例如字符串文本与语言resoruce,这我会显示在微调和在这个对象中,我需要ID为枚举或枚举类型,并在SelectedPeriod我会知道什么被选中....一些技巧如何使它?

我的视图模型实现现在的问题是:

public void Init(Shop shop) 
     { 
      _shop = shop; 
      _shopName = shop.Name; 
      InitializePeriodList(); 
      InitializeDailySales(); 
     } 

     private void InitializePeriodList() 
     { 
      _periodList = new List<string>(); 

      _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "LastSevenDays")); 
      _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "ThisWeek")); 
      _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "LastWeek")); 

      string first = null; 
      foreach (var s in _periodList) 
      { 
       first = s; 
       break; 
      } 
      _selectedPeriod = first != null ? _periodList.FirstOrDefault() : CoreResources.Instance.LocalizedString(Constants.InfoMessages, "Error"); 
     } 


    private List<string> _periodList; 
     public List<string> PeriodList 
     { 
      get { return _periodList; } 
      set 
      { 
       _periodList = value; 
       RaisePropertyChanged(() => PeriodList); 
      } 
     } 

     private string _selectedPeriod; 
     public string SelectedPeriod 
     { 
      get { return _selectedPeriod; } 
      set 
      { 
       _selectedPeriod = value; 
     InitializeDailySales(); 
       RaisePropertyChanged(() => SelectedPeriod); 
      } 
     } 

布局实现:

<MvxSpinner 

     android:layout_width="match_parent" 

     android:layout_height="wrap_content" 

     android:id="@+id/periodSpinner" 

     local:MvxBind="ItemsSource PeriodList; SelectedItem SelectedPeriod" 

     android:spinnerMode="dropdown" /> 

回答

0

嗯,我有一个想法。我可以创建方法,该方法将返回期间在那里的名单期间将以LocalizedString和PeriodType为对象。在ViewModel中,我将有这个TempList和Spinner我将从TempList创建只带有LocalizedString的字符串List,并且当我在Spinner中选择一些时,我将只找到item = TempList.Where(q => q.LocalizedString.Equals(_selectedPeriod))我会有item.PeriodType ....