我现在有一个针对Android的Spinner(MvxSpinner)的问题(但后来我也需要它用于iOS)。我有旋转周期过滤器像本周,上周,本月等。这个过滤器我需要为我的api服务获取数据...我的问题是我想要使用期间类型的枚举(或者mb一些更好的解决方案) ?)这样的事情:
枚举期间类型:
public enum PeriodTypes
{
Unknown = -1,
LastSevenDays = 0,
LastWeek = 1,
ThisWeek = 2
}
我可以创建枚举列表这些PeriodTypes,但我的问题是我需要在Spinner字符串中使用语言资源但在SelectedPeriod我需要知道它的PeriodTypes.LastWeek并使用它从api服务获取数据而不是像现在只是语言资源中的字符串......
我的问题是,如果我可以使用某些对象,例如带有语言resoruce的字符串文本,我会在Spinner中显示,在这个对象中我需要有Enum或Enum类型的Id,在SelectedPeriod中我会知道是什么被选中....一些提示如何制作?
我现在的ViewModel实现是:
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 :(得分:0)
嗯我有一个想法..我可以创建一个方法,它将返回Period of Periods,其中Period将是LocalizedString和PeriodType的对象。在ViewModel中我将有这个TempList,对于Spinner,我将使用TempList中的LocalizedString创建字符串List,当我在Spinner中选择一些时,我会找到item = TempList.Where(q =&gt; q.LocalizedString.Equals(_selectedPeriod) )我将有item.PeriodType ....