0

当我想验证我的插入时,我在检索微调器的值时遇到问题。

这是我如何填充我的微调器:

ArrayList<HashMap<String, String>> myArrayList;
myArrayList= new ArrayList<HashMap<String, String>>();
for (int i = 0; i < studentList.length(); i++) {
JSONObject c = studentList.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
HashMap<String, String> map = new HashMap<String, String>();
map.put("id", id);
map.put("name", name);
myArrayList.add(map);
}

之后 :

SpinnerAdapter studentAdapter = new SimpleAdapter(
MyActivity.this, myArrayList,
R.layout.student, new String[] { "id", "name"},
new int[] { R.id.id, R.id.name });
mySpinner.setAdapter(studentAdapter);

当我单击“确定”按钮时,我得到微调器的值

mySpinner.getSelectedItem().toString();

我得到:

{id=2,名称=史密斯}

但我敢肯定还有另一种方法可以只检索名称,但是如何?通过使用微调器获取适配器?是我的问题...

谢谢

4

3 回答 3

0

我确定还有另一种方法可以仅检索名称,但是如何?

您可以使用 OnItemSelectedListener 始终拥有用户当前的选择:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
    // Do with name as you please
}

或者您可以使用相同的技术,getSelectedView()仅在验证后获取名称。

于 2013-03-08T20:17:18.650 回答
0

给你的对象Spinner是一个HashMap。将其转换为这样,然后以通常的方式提取值:

String studentName = ((HashMap)mySpinner.getSelectedItem()).get("name");

另一种选择:而不是使用ArrayList<HashMap>来填充您的Spinner,您可能想要使用它 ArrayList<Student>(假设Student您已经拥有一个可供您使用的类)。然后,您可以将当前选定的对象投射到Student并随意使用它:

String studentName = ((Student)mySpinner.getSelectedItem()).name;
于 2013-03-08T21:28:03.630 回答
0
String data="{id=2, name=Smith}";//you retrieved 
String array[]=data.split("name=");//split in values of '**id=2,** ' and '**Smith**'
String name=array[array.length-1];  //take last value

您将在名称变量中包含“Smith”。不喜欢,但如果别无选择,请使用它

于 2015-04-03T13:09:48.880 回答