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" />