0

我正在开发一个 Android 应用程序。我有一个微调器,我可以找到从中选择的项目。我需要能够将所选项目与一个数字相匹配,然后将其传递给另一个活动以执行 API 请求。我不知道该怎么做。我一直在寻找这个问题的解决方案,但我还没有找到可以遵循的非常明确的说明。我发现我可以Map<String, String>用来做匹配部分,但我怎样才能检索从中选择的那个的编号?我会在 Array 中搜索SelectedValue,那将如何完成?我知道我可以startActivityforResult();将号码转移到下一个活动。我也不确定如何将其添加number到网址中,例如http://google.com/number。我的代码如下:

TestStation.java 的一部分

        Spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

                String selectedValue = arg0.getItemAtPosition(arg2).toString();
                int[] Yellow_ID = getResources().getIntArray(R.array.Yellow_ID);
                int[] Yellow_Li = getResources().getIntArray(R.array.Yellow_Line);

                HashMap<Integer, Integer> myMap = new HashMap<Integer, Integer>();
                for (int i = 0; i < Yellow_Line.length(); i++) {
                    myMap.put(Yellow_Li[i], Yellow_ID[i]);
                }




        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });


}

谢谢您的帮助。

4

2 回答 2

0

要匹配一对 String - Number 值,您可以使用 String -> Number 映射。例如:

Map<String, Integer> pairs = new HashMap<String, Integer>();
pairs.put("key1", 25);
pairs.put("key2", 10);

然后,您可以像这样使用它:

Integer value = pairs.get("key1"); // value = 25

这能解决你的问题吗?

发表评论后的版本:

Map<String, Integer> posibleSelectedValues = new HashMap<String, Integer>();
posibleSelectedValues("possibleKey1", respectiveValue1);
posibleSelectedValues("possibleKey2", respectiveValue2);
posibleSelectedValues("possibleKey3", respectiveValue3);
posibleSelectedValues("possibleKey4", respectiveValue4);
posibleSelectedValues("possibleKey5", respectiveValue5);

然后:

String userSelectedValue= user_selected_option;
Integer correspondingValue = posibleSelectedValues.get(userSelectedValue);
于 2013-10-02T20:19:04.163 回答
0

如果值不是动态的,您可以将微调器中的项目设为枚举。

mySpinner.setAdapter(new ArrayAdapter<Value>(this, android.R.layout.simple_spinner_item, Value.values()));

        Spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
            Value selectedValue = arg0.getItemAtPosition(arg2);
            //Get whatever you want from it
    }

示例枚举

public enum Value {
  BLAH("key1",1,"myToStringVal"), MORE_BLAH("key1",1,"myToStringVal");
  Value(String key, int value, String name) {
    this.key = key;
    this.value = value;
    this.name = name;
  }   

  public String getKey() {
    return key;
  }
  public int getValue() {
    return value;
  }
  public String toString() {
    return name;
  }
}
于 2013-10-02T20:32:27.323 回答