1
私はXamarinアプリケーションでENUMの値を使ってSpinnerを構築しようとしています。XamarinのENUM値を持つスピナー
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配列を変更するには時代遅れの取得私はそれを行うだろう 方法は次のようになります。
どのようなフィールドには気を付けずにSpinnerに値をバインドできますか?
「System.linq」が追加されても、「Array」には「Select」と拡張メソッド...の定義が含まれていないというメッセージが表示されます。 –
'Enum.GetValues'は、(genericを使ったバージョンではなく)' Array'の古いバージョンを返します。更新されたコードについては、編集された回答を参照してください。 – dylansturg
また、値が100未満であると思われますので、これは問題ではありませんが、配列が大きくなるにつれ、 'ArrayAdapter'にはパフォーマンス上の問題があります。これは、ガベージコレクタへのJavaおよびGREFの影響によるブリッジングのために発生します。 BaseAdapterをサブクラス化する独自の実装を作成するだけで、簡単に問題を回避できます。 – dylansturg