spinner上的setOnItemSelectedListener?

时间:2017-02-15 15:39:34

标签: android json spinner

我正在尝试在我的微调器上设置onItemSelectedListener,所以如果从spinner中选择一个值,它将显示所选的值。我的代码是,

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

我已经尝试使用谷歌搜索所有选项以及我能想到的许多其他变体,并且无法找到任何有用的结果,所以我显然遗漏了一些东西。

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

2 个答案:

答案 0 :(得分:1)

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

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
    }

});

现在,由于您知道所选项目的位置,因此您可以使用它来从微调框列表中的项目列表中获取项目。

答案 1 :(得分:0)

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