我正在开发一个 Android 应用程序,我有这个枚举,它将显示在一个 Spinner 中,使用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()));
}
如您所见,枚举上的第一项是noSelected
,我需要它必须始终是 Spinner 上的第一项,下一项将按字母顺序排列。
我使用statureString
是因为这个 var 将被本地化。
如何使 noSelected 成为第一项?