Java 将字符串转换为项目编号,然后将“活动”传递给API
我正在开发一个Android应用程序。我有一个微调器,可以找到从中选择的项目。我需要能够将所选项目匹配到一个数字,然后将其传递给另一个活动以执行API请求。我不知道该怎么做。我一直在寻找这个问题的解决方案,但我还没有找到可以遵循的非常清晰的说明。我发现我可以使用Java 将字符串转换为项目编号,然后将“活动”传递给API,java,android,android-spinner,matching,Java,Android,Android Spinner,Matching,我正在开发一个Android应用程序。我有一个微调器,可以找到从中选择的项目。我需要能够将所选项目匹配到一个数字,然后将其传递给另一个活动以执行API请求。我不知道该怎么做。我一直在寻找这个问题的解决方案,但我还没有找到可以遵循的非常清晰的说明。我发现我可以使用Map来做匹配部分,但是我如何才能从中检索到所选部分的编号呢?我是否可以在数组中搜索SelectedValue,这将如何实现?我知道我可以做startActivityforResult()将号码转移到下一个活动。我也不知道如何将numbe
Map
来做匹配部分,但是我如何才能从中检索到所选部分的编号呢?我是否可以在数组中搜索SelectedValue
,这将如何实现?我知道我可以做startActivityforResult()
将号码转移到下一个活动。我也不知道如何将number
添加到url,比如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
}
});
}
Spinner2.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
//TODO自动生成的方法存根
String selectedValue=arg0.getItemAtPosition(arg2.toString();
int[]Yellow\u ID=getResources().getIntArray(R.array.Yellow\u ID);
int[]Yellow\u Li=getResources().getIntArray(R.array.Yellow\u行);
HashMap myMap=新HashMap();
对于(int i=0;i
谢谢您的帮助。要匹配一对字符串-数字值,可以使用字符串->数字映射。例如:
Map<String, Integer> pairs = new HashMap<String, Integer>();
pairs.put("key1", 25);
pairs.put("key2", 10);
这能解决你的问题吗
评论后的版本:
Map<String, Integer> posibleSelectedValues = new HashMap<String, Integer>();
posibleSelectedValues("possibleKey1", respectiveValue1);
posibleSelectedValues("possibleKey2", respectiveValue2);
posibleSelectedValues("possibleKey3", respectiveValue3);
posibleSelectedValues("possibleKey4", respectiveValue4);
posibleSelectedValues("possibleKey5", respectiveValue5);
如果值不是动态的,则微调器中的项可以是枚举
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
}
唯一的另一件事就是比较它们。我有大约100个项目,所以如果value=somestring Integer value=pairs.get(“key1”);/,我必须执行
value=25,如果value=otherstring整数值=pairs.get(“key2”);//value=10不,您可以直接执行:Integer intValue=pairs.get(strValue)也许我没有正确理解你的问题。若你们想将字符串和Intger匹配,你们可以使用Map,但你们也可以使用Map,Map,Map和任何你们喜欢的东西。使用贴图的主要规则是,它们包含键->值对,两者都可以是任何类型的对象
String userSelectedValue= user_selected_option;
Integer correspondingValue = posibleSelectedValues.get(userSelectedValue);
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;
}
}