将值赋给微调器中的字符串数组项

时间:2016-06-04 04:30:24

标签: java android spinner

我有一个微调器,我想在美国选择一个像'德克萨斯'的州,然后捕捉那个选择。我希望微调器上的显示为“Texas”,“California”,“Utah”等,但是当用户选择它并且我捕获值时,我希望值为'57'而不是“Texas” 。我知道我可以这样做:

String selection = my_spinner.getSelectedItem().toString();
int selectionVal;

if(selection = "Texas"){
   selectionVal = 57;
}

但我必须为很多州做到这一点。有没有办法像我上面解释的那样做?如果没有,那么最有效的方法是什么?谢谢。

5 个答案:

答案 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();