Xamarin中具有ENUM值的微调器

时间:2016-05-20 19:47:01

标签: c# android xamarin enums spinner

我正在尝试在我的Xamarin应用程序中使用来自ENUM的值构建一个Spinner。 我这样做的方式是这样的:

view.FindViewById<Spinner>(Resource.Id.my_spinner).Adapter = new ArrayAdapter<String>(context, layout, Resources.GetStringArray(Resource.my_enum_array));

在我的values/Strings.xml

<string-array name="my_enum_array">
<item>Enum Item 1</item>
<item>Enum Item 2</item>
</string-array>

但改变MyEnum,Strings上的数组已经过时了。

如何将值绑定到我的Spinner而无需关心它具有哪些字段?

1 个答案:

答案 0 :(得分:0)

您可以使用Enum.GetValues(typeof(YourEnum))获取枚举的所有值。然后,您可以使用它为您的适配器创建数组。

var enumValues = Enum.GetValues(typeof(YOUR_ENUM));
var arrayForAdapter = enumValues.Cast<YOUR_ENUM>().Select(e => e.ToString()).ToArray();
var adapter = new ArrayAdapter<string>(context, layout, arrayForAdapter);

您需要使用System.Linq添加一个。

using System.Linq;

我没有尝试过运行此代码,但我认为应该非常接近。如果您有任何问题,请告诉我。

编辑添加了Cast以将对象数组转换为IEnumerable<YOUR_ENUM>