在Android中将枚举添加到微控制器的数组适配器

我正在寻找使用枚举在Android的微调控件的内部列表。 我有我的枚举设置如下:

public enum States{ AL("Alabama"), AK("Alaska"), AR("Arkansas"), AZ("Arizona"), CA("California"), CO("Colorado"), ... (etc.) } 

我当前的arrays适配器设置如下:

 mAddressState.setAdapter(new ArrayAdapter<States>(this, android.R.layout.simple_list_item_1, States.values())); 

这几乎可行,但在我的Spinner列表中,我最终得到的是缩写,而不是州名(这就是我所要做的)。 有没有一个解决方法来正确地得到这个设置?

Solutions Collecting From Web of "在Android中将枚举添加到微控制器的数组适配器"

我希望这有助于某人。 我花了一段时间才弄清楚自己。 诀窍是在你的枚举中重写toString。 您的状态枚举的代码将是:

 public enum States{ AL("Alabama"), AK("Alaska"), AR("Arkansas"), AZ("Arizona"), CA("California"), CO("Colorado"), ... (etc.); private String theState; States(String aState) { theState = aState; } @Override public String toString() { return theState; } } 

然后,像以下一样创build适配器:

  mAddressState.setAdapter(new ArrayAdapter<States>(this, android.R.layout.simple_list_item_1, States.values())); 

长名字将出现在微调。 要从适配器获取缩写名称,例如要存储选定的缩写名称,请使用enum.name()函数。 例如:

 Spinner spinner = (Spinner) myView.findViewById(R.id.theState); String selected = ((States)spinner.getSelectedItem()).name(); 

像这样添加一个枚举构造函数…然后用States.fullName()replaceStates.values()

 public enum States{ AL("Alabama"), AK("Alaska"), ... (etc.) private String fullName; States(String fullName) { this.fullName = fullName; } public String fullName() { return fullName; } } 

也许你可以尝试覆盖toString()函数,如下所示。 我还没有尝试过,但我正要做。