我通过网络服务中的 json 填充微调器。微调器被填充,设置索引 0 的选择,onitemselected 方法触发并启动另一个方法来根据微调器中的值填充 ListView 。
当我用不同的数据重新填充微调器时,就会出现问题。微调器被填满,设置了索引 0 的选择, onitemselected 触发,当我输出所选项目时,它显示索引 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");
第一次运行时一切正常,但是当我执行更改微调器内容的操作时,由于某种原因,最后的方法仍然会获取旧数据
最佳答案
解决了。在最初设置适配器之前,我执行以下操作
final Spinner spinner = (Spinner) findViewById(R.id.comSpinner);
spinneritems.clear();
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);
关于java - 微调器选择是更新微调器项目之前的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548252/