微调器上的 setOnItemSelectedListener?

setOnItemSelectedListener on spinner?

我正在尝试在微调器上设置 onItemSelectedListener,因此如果从微调器中选择了一个值,它将显示该选定值。我的代码是,

 ArrayList<String> items = getCountries("data.json");

    spinner = (Spinner)findViewById(R.id.spinnerStandard);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.second_layout,R.id.txtStandard,items);
    spinner.setAdapter(adapter);
}

private ArrayList<String> getCountries(String fileName){

    JSONArray jsonArray = null;
    ArrayList<String> cList = new ArrayList<String>();
    try {
        InputStream is = getResources().getAssets().open(fileName);
        int size = is.available();
        byte[] data = new byte[size];
        is.read(data);
        is.close();
        String json = new String(data, "UTF-8");
        jsonArray=new JSONArray(json);
        if (jsonArray != null) {
            for (int i = 0; i < jsonArray.length(); i++) {
                String standard = jsonArray.getJSONObject(i).getString("standard");
                if(!cList.contains(standard))
                    cList.add(standard);
            }
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (JSONException je)
    {
        je.printStackTrace();
    }
   return cList;
}

我已经尝试使用谷歌搜索所有选项和我能想到的尽可能多的其他变体,但找不到任何有用的结果,所以我显然遗漏了一些东西。

处理这种情况的正确方法是什么?

setOnItemSelectedListener 是在微调器中选择项目时调用的侦听器:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }

});

既然您知道所选项目的位置,就可以使用它从微调列表的项目列表中获取项目。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override   
    public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) 
    {
        //Called when item is selected, use position of item to find it from list of items
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0)
    {
        //Called when no item is selected
    }
});