2016-05-31 62 views
0

我通过json从webservice填充微调器。微调器被填充,设置索引0的选择,onitemselected方法触发并启动另一个方法来根据微调器中的值填充列表视图。微调器选择是更新微调器项目之前的记录

当我用不同的数据填充微调框时会出现问题。微调器被填满,索引0的选择被设置,在被选中的火焰上,当我输出选择的项目时,它显示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

解决了它。在开始设置适配器之前,我会做以下操作

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