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>
。
我正在尝试在我的 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>
。