私は Android アプリを開発しています。この列挙型は、 を使用してアルファベット順に並べられたスピナーに表示されますstatureString
。
public enum Stature
{
noSelected (-1, MSDApplication.getAppContext().getString(R.string.no_selected)),
tall (0, MSDApplication.getAppContext().getString(R.string.stature_tall)),
average(1, MSDApplication.getAppContext().getString(R.string.stature_average)),
small(2, MSDApplication.getAppContext().getString(R.string.stature_small));
private final int stature;
private final String statureString;
Stature(int anStature, String anStatureString) { stature = anStature; statureString = anStatureString; }
public int getValue() { return stature; }
@Override
public String toString() { return statureString; }
public static Stature[] getSortedVaules()
{
Stature[] statures = values();
Arrays.sort(statures, EnumByToStringComparator.INSTANCE);
return statures;
}
}
private static class EnumByToStringComparator implements Comparator<Enum<?>>
{
public static final Comparator<Enum<?>> INSTANCE = new EnumByToStringComparator();
public int compare(Enum<?> enum1, Enum<?> enum2)
{
return enum1.toString().compareTo(enum2.toString());
}
}
そして、この列挙型を ArrayAdapter として追加する方法は次のとおりですSpinner
。
private void setSpinStatureData()
{
mSpinStature.setAdapter(new ArrayAdapter<Stature>(mActivity, android.R.layout.simple_dropdown_item_1line, Stature.getSortedVaules()));
}
ご覧のとおり、Enum の最初の項目は、noSelected
これが常に Spinner の最初の項目でなければならず、次の項目はアルファベット順に並べられる必要があります。
statureString
この var はローカライズされるため、使用します。
noSelected を最初の項目にするにはどうすればよいですか?