验证后检索微调器的值

时间:2013-03-08 20:11:55

标签: android spinner adapter

当我想验证插入时,我有一个问题需要检索微调器的值。

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

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);

当我点击我的按钮“OK”时,我得到了微调器的值

mySpinner.getSelectedItem().toString();

我明白了:

  

{id = 2,name = Smith}

但我确定还有另一种方法只检索名称,但是如何?通过旋转器获得适配器?这是我的问题......

谢谢

3 个答案:

答案 0 :(得分: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()相同的技术仅在验证后获取名称。

答案 1 :(得分:0)

Spinner给你的对象是一个HashMap。像这样抛出它,然后按照通常的方式提取值:

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

另一种选择:您可能希望使用ArrayList<HashMap>来填充Spinner,而不是使用ArrayList<Student>填充Student(假设Student是您已经拥有的课程处置)。然后,您可以将当前选定的对象转换为String studentName = ((Student)mySpinner.getSelectedItem()).name; 并随意使用它:

{{1}}

答案 2 :(得分: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'。不是首选,但如果没有选择则使用它