gpt4 book ai didi

java - 按字母顺序对 Enum.values() 进行排序,并将它们添加到 Spinner ArrayAdapter

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:50 29 4
gpt4 key购买 nike

我正在开发一个使用 Web 服务的 Android 应用程序。

我想根据描述按字母顺序 Enum.values() 排序。

我有这个枚举:

public enum Stature
{
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; }
}

也许,这不是使用 Enum 的最佳选择,但我是 Java 开发的新手。

您知道如何使用它的 statureString 按字母顺序对它进行排序吗?

我想这样做是因为我想在 ArrayAdapter 上使用这些 Enum.values():

mSpinStature.setAdapter(new ArrayAdapter<Stature>(mActivity, android.R.layout.simple_dropdown_item_1line, Stature.values()));

我想在此处获取Stature 所选项目:

private OnItemSelectedListener listener = new OnItemSelectedListener()
{

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long aid)
{
if (parent.equals(mSpinStature))
{
Stature item = (Stature)parent.getAdapter().getItem(pos);
Log.v("TAG", item.toString() + item.getValue());
}
}

@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}

};

最佳答案

如何向枚举中添加一个方法

enum Stature {
tall, average, small;

public static Stature[] getSortedVaules() {
Stature[] statures = values();
Arrays.sort(statures, EnumByNameComparator.INSTANCE);
return statures;
}

private static class EnumByNameComparator implements Comparator<Enum<?>> {

public static final Comparator<Enum<?>> INSTANCE = new EnumByNameComparator();

public int compare(Enum<?> enum1, Enum<?> enum2) {
return enum1.name().compareTo(enum2.name());
}

}

}

public class StatureTest {

@Test
public void getSortedValues() {
Stature[] normalValues = Stature.values();
Assert.assertEquals(Stature.tall, normalValues[0]);
Assert.assertEquals(Stature.average, normalValues[1]);
Assert.assertEquals(Stature.small, normalValues[2]);

Stature[] sortedVaules = Stature.getSortedVaules();
Assert.assertEquals(Stature.average, sortedVaules[0]);
Assert.assertEquals(Stature.small, sortedVaules[1]);
Assert.assertEquals(Stature.tall, sortedVaules[2]);
}
}

关于java - 按字母顺序对 Enum.values() 进行排序,并将它们添加到 Spinner ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17230233/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com