我通过网络服务从json填充一个微调器。微调器被填充,选择索引0,onitemselected方法触发并启动另一个方法,根据微调器中的值填充列表视图。
当我使用不同的数据重新填充微调器时,会出现问题。 Spinner被填充,设置了索引0的选择,onitemselected fires,当我输出所选项时,它显示0索引处的前一项。 spinneritems.get抓取旧数据而不是新填充的数据。
这里填充微调器
for (int i = 0; i < recordsArray.length(); i++) {
JSONObject record = recordsArray.getJSONObject(i);
Map<String, String> datum = new HashMap<String, String>(2);
datum.put("code", record.getString("id") + " - " + record.getString("heading"));
datum.put("description", record.getString("body"));
spinneritems.add(datum);
adapter.notifyDataSetChanged();
spinner.setSelection(0);
}
导致
的解雇spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
populateList(page);
}
然后使用
调用方法final Spinner spinner = (Spinner)findViewById(R.id.comSpinner);
String spinnerItem = spinneritems.get(spinner.getSelectedItemPosition()).get("code");
第一次运行时一切正常,但是当我执行一个更改微调器内容的操作时,最后的方法仍会因某种原因抓取旧数据
答案 0 :(得分:1)
解决了它。在最初设置适配器之前,我执行以下操作
final Spinner spinner = (Spinner) findViewById(R.id.comSpinner);
spinneritems.clear();
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);