我有一个微调器,我想在美国选择一个像'德克萨斯'的州,然后捕捉那个选择。我希望微调器上的显示为“Texas”,“California”,“Utah”等,但是当用户选择它并且我捕获值时,我希望值为'57'而不是“Texas” 。我知道我可以这样做:
String selection = my_spinner.getSelectedItem().toString();
int selectionVal;
if(selection = "Texas"){
selectionVal = 57;
}
但我必须为很多州做到这一点。有没有办法像我上面解释的那样做?如果没有,那么最有效的方法是什么?谢谢。
答案 0 :(得分:3)
您可以创建一个HashMap
,其中包含状态名称作为键,它的等效数字作为值。
用户从Spinner
中选择一个值后,您只需从HashMap
获取值并显示它。
例如,您可以尝试这样的事情
HashMap<String,Integer> myMap=new HashMap<String,Integer>();
myMap.put("Texas",57);
您可以将所有值添加到此HashMap
。
现在,当您从Spinner
获得所选选项时,您可以从HashMap
获取值。
selectionVal=myMap.get(selection);
希望这会有所帮助:)
答案 1 :(得分:2)
使用仅3行行代码。将所有选择保存在数组中,如下所示,然后通过微调器调用它们。 getSelectedItemId()
String selection = my_spinner.getSelectedItem().toString();
int[] selectionVal = {57,58,59,60,61};
int sp_selected_val = selectionVal[my_spinner.getSelectedItemId()];
答案 2 :(得分:1)
在你的字符串xml资源中:
<string-array name="state_titles">
<item>Texas</item>
<item>California</item>
...
</string-array>
<string-array name="state_values">
<item>57</item>
<item>58</item>
...
</string-array>
在您的代码中:
String[] stateValues = getResources().getStringArray(R.array.state_values);
selectionVal = Integer.valueOf(stateValues[my_spinner.getSelectedItemPosition()]);
答案 3 :(得分:0)
String [] str = new String [] {&#34; one&#34;,&#34; two&#34;,&#34; three&#34;};
ArrayAdapter yourarray = new ArrayAdapter(MyActivityClass.this,android.R.layout.simple_spinner_item,str); yourarray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapt.setAdapter(yourarray);
试试这个
答案 4 :(得分:0)
你可以为它创建枚举:
public enum State {
Texas(57),la(59);
private int value;
State(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
然后在您的代码中,您可以使用枚举值填充微调器。
ArrayAdapter<State> stateAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, State.values());
stateSpinner.setAdapter(stateAdapter);
并获取这样的int值:
int selectedState = State.values() [stateSpinner.getSelectedItemPosition()].getValue();