我正在尝试在我的微调器上设置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;
}
我已经尝试使用谷歌搜索所有选项以及我能想到的许多其他变体,并且无法找到任何有用的结果,所以我显然遗漏了一些东西。
这种情况的正确方法是什么?
答案 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
}
});