Rya*_*ary 14 enums android android-widget
我正在寻找使用枚举在android上的微调器小部件内的列表.我的枚举设置如下:
public enum States{
AL("Alabama"),
AK("Alaska"),
AR("Arkansas"),
AZ("Arizona"),
CA("California"),
CO("Colorado"),
... (etc.)
}
Run Code Online (Sandbox Code Playgroud)
我当前的数组适配器设置如下:
mAddressState.setAdapter(new ArrayAdapter<States>(this, android.R.layout.simple_list_item_1, States.values()));
Run Code Online (Sandbox Code Playgroud)
这几乎可以工作,但在我的微调器列表中,我最终得到的是缩写,而不是州名(这就是我想要的).有没有解决方法来正确设置此设置?
小智 35
我希望这有助于某人.我花了一段时间才弄清楚自己.诀窍是在你的枚举中覆盖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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,像您一样创建适配器:
mAddressState.setAdapter(new ArrayAdapter<States>(this,
android.R.layout.simple_list_item_1, States.values()));
Run Code Online (Sandbox Code Playgroud)
长名字将出现在微调器中.要从适配器获取缩写名称,例如存储所选的名称,请使用enum.name()函数.例如:
Spinner spinner = (Spinner) myView.findViewById(R.id.theState);
String selected = ((States)spinner.getSelectedItem()).name();
Run Code Online (Sandbox Code Playgroud)