2017-06-02 3 views
1

Ich habe ein Problem mit Spinner (MvxSpinner) jetzt für Android (aber später werde ich es auch für iOS benötigen). Ich habe in Spinner Zeitraum Filter wie diese Woche, letzte Woche, diesen Monat, etc .. Dieser Filter brauche ich für meine API-Dienste für Daten erhalten ... Mein Problem ist, ich möchte wahrscheinlich verwenden Enum of Period Typen (oder mb etwas bessere Lösung ?) so etwas wie dieses:Xamarin Android Spinner (MvxSpinner) binden mit Sprachressourcen und selecteditem

Enum PeriodTypes:

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

ich kann Liste der Enum machen diese PeriodTypes aber mein Problem ist, ich in Spinner Strings mit Sprachressourcen haben, müssen aber in SelectedPeriod ich muss kenne zum Beispiel seine PeriodTypes.LastWeek und benutze sie zum Abrufen von Daten aus API-Diensten und nicht wie jetzt nur in Sprachressourcen string ...

Meine Frage ist, ob ich ein Objekt verwenden kann, wo ich zum Beispiel Zeichenfolge Text mit Sprache resoruce haben und dies werde ich in Spinner zeigen und in diesem Objekt muss ich Id der Enum oder Enum Typ und SelectedPeriod ich weiß was ist ausgewählt .... Einige Tipps, wie man es macht?

Meine Viewmodel Implementierung jetzt ist:

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); 
      } 
     } 

Layout-Implementierung:

<MvxSpinner 

     android:layout_width="match_parent" 

     android:layout_height="wrap_content" 

     android:id="@+id/periodSpinner" 

     local:MvxBind="ItemsSource PeriodList; SelectedItem SelectedPeriod" 

     android:spinnerMode="dropdown" /> 

Antwort

0

Hmm Ich habe eine Idee .. Ich kann Methode erstellen, die Liste der Perioden zurück, wo Periode wird Objekt mit LocalizedString und PeriodType sein. In ViewModel habe ich diese TempList und für Spinner werde ich nur String List mit LocalizedString aus TempList erstellen und wenn ich etwas in Spinner auswählen werde ich nur finden item = TempList.Where (q => q.LocalizedString.Equals (_selectedPeriod)) und ich werde item.PeriodType ....

haben
Verwandte Themen