2016-10-11 9 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 (адаптер); to adpater = null; adapter = new ArrayAdapter <> (ViewState.this, R.layout.spinner_state, state); adapter.notifyDataSetChanged(); spinner2.setAdapter (адаптер); –

+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){ 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^