微调器选择是更新微调器项之前的记录

时间:2016-05-31 14:17:47

标签: java android android-studio

我通过网络服务从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");

第一次运行时一切正常,但是当我执行一个更改微调器内容的操作时,最后的方法仍会因某种原因抓取旧数据

1 个答案:

答案 0 :(得分:1)

解决了它。在最初设置适配器之前,我执行以下操作

final Spinner spinner = (Spinner) findViewById(R.id.comSpinner);
spinneritems.clear();
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);