Xamarin 中具有 ENUM 值的微调器

Spinner with ENUM values in Xamarin

我正在尝试在我的 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 字符串上的数组会过时。

如何将值绑定到我的微调器而不关心它有哪些字段?

您可以使用 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>