2016-10-11 49 views
0

我有两个旋钮,第一个旋钮与第二个旋钮相关。我的第二个旋转器适配器在第一个旋转器位置发生变化后未更新

我正在使用JSON填充它们两个的适配器。

当我开始活动时,两个适配器已经填充了正确的数据(第一个和第二个适配器是相关的)。

但是,当我尝试更改第一个微调器的项目位置时,第二个微调器的适配器仍包含第一个加载的数据。

我想要的是,第二个微调器的适配器可以动态地包含与第一个微调器相关的数据,当第一个微调器的项目位置发生变化时。

我不知道是什么问题,我真的需要一些帮助。

这里是我的代码:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 
     @Override 
     public void onItemSelected (AdapterView <?> parent, View view,int position, long id){ 
       try { 
        JSONObject json = result.getJSONObject(position); 
        result = json.getJSONArray("all_state"); 
        state.clear(); 
        for (int i = 0; i < result.length(); i++) { 
         try { 
          JSONObject json2 = result.getJSONObject(i); 
          state.add(json2.getString("state")); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      adapter = new ArrayAdapter<>(ViewState.this, R.layout.spinner_state, state); 
      adapter.notifyDataSetChanged(); 
      spinner2.setAdapter(adapter); 
     } 

     @Override 
     public void onNothingSelected (AdapterView <?> parent){ 
     } 
    }); 
+0

尝试改变适配器=新ArrayAdapter <>(ViewState.this,R.layout.spinner_state,状态); adapter.notifyDataSetChanged(); spinner2.setAdapter(adapter); adpater = null; adapter = new ArrayAdapter <>(ViewState.this,R.layout.spinner_state,state); adapter.notifyDataSetChanged(); spinner2.setAdapter(adapter); –

+0

@JhamanDas,不要在评论部分回答问题,他们打算给OP建议或要求澄清。 – Shashanth

+0

@JhamanDas,它仍然不是答案,我试过它。 :( –

回答

0

它解决的问题是,因为我把的JSONObject和JSONArray到相同的变量“结果”。

因此,这里是正确的代码:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{ 
    @Override 
    public void onItemSelected (AdapterView <?> parent, View view,int position, long id){ 
      try { 
       JSONObject json = result.getJSONObject(position); 
       result2 = json.getJSONArray("all_state"); 
       state.clear(); 
       for (int i = 0; i < result2.length(); i++) { 
        try { 
         JSONObject json2 = result2.getJSONObject(i); 
         state.add(json2.getString("state")); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     adapter = new ArrayAdapter<>(ViewState.this, R.layout.spinner_state, state); 
     adapter.notifyDataSetChanged(); 
     spinner2.setAdapter(adapter); 
    } 

    @Override 
    public void onNothingSelected (AdapterView <?> parent){ 
    } 
}); 
相关问题