2017-03-17 2 views
0

J'ai vérifié les questions liées à ce problème et essayé quelques-unes de la suggestion, mais il ne semble toujours pas exécuter l'événement setOnItemSelectedListener. Voici mon code d'activité:Spinner setOnItemSelectedListener n'est pas invoqué

private void init() { 
     pays = (Spinner) findViewById(R.id.pays_spinner); 
     populatePays(); 
    }  

    List<String> list; 
    public void populatePays(){ 
     list = new ArrayList<String>(); 
     apiService = RestService.createService(SolarAPIService.class); 
     Call<ArrayList<String>> call = apiService.listPays(); 
     call.enqueue(new Callback<ArrayList<String>>() { 
       @Override 
       public void onResponse(Call<ArrayList<String>> call, Response<ArrayList<String>> response) { 
        for(String pays: response.body()) { 
          list.add(pays); 
        } 
        } 

       @Override 
        public void onFailure(Call<ArrayList<String>> call, Throwable t) { 

        } 
       }); 

    ArrayAdapter<String> dataAdapter= new ArrayAdapter<String> 
      (this, android.R.layout.simple_spinner_item, list); 
    dataAdapter.setDropDownViewResource 
      (android.R.layout.simple_spinner_dropdown_item); 
    pays.setAdapter(dataAdapter); 
    pays.setSelection(1); 
    pays.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      nompays=pays.getItemAtPosition(position).toString(); 
      Toast.makeText(getApplicationContext(), 
        "Selected Country : " + nompays, Toast.LENGTH_LONG).show(); 
      populateVille(nompays); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

J'apprécierais votre aide. Merci!

+0

Votre compteur est-il rempli de données? – rafsanahmad007

+0

oui mon spinner obtenir peuplé avec des données, c'est juste que lorsque je tente de sélectionner un élément rien ne se passe – MeknessiHamida

Répondre

0

Définir l'adaptateur de spinner après le remplissage de la liste.

private void init() { 
    pays = (Spinner) findViewById(R.id.pays_spinner); 
    populatePays(); 
} 

List<String> list; 

public void populatePays() { 
    list = new ArrayList<String>(); 
    apiService = RestService.createService(SolarAPIService.class); 
    Call<ArrayList<String>> call = apiService.listPays(); 
    call.enqueue(new Callback<ArrayList<String>>() { 
     @Override 
     public void onResponse(Call<ArrayList<String>> call,     Response<ArrayList<String>> response) { 
      for (String pays : response.body()) { 
       list.add(pays); 
      } 
      setSpinnerAdapter(); 
     } 

     @Override 
     public void onFailure(Call<ArrayList<String>> call, Throwable t) { 

     } 
    }); 

private void setSpinnerAdapter() { 

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> 
      (this, android.R.layout.simple_spinner_item, list); 
    dataAdapter.setDropDownViewResource 
      (android.R.layout.simple_spinner_dropdown_item); 
    pays.setAdapter(dataAdapter); 
    pays.setSelection(1); 
    pays.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      nompays = pays.getItemAtPosition(position).toString(); 
      Toast.makeText(getApplicationContext(), 
        "Selected Country : " + nompays, Toast.LENGTH_LONG).show(); 
      populateVille(nompays); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
} 
0

Au lieu de:

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

essayer;

pays.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+0

votre suggestion n'a pas fonctionné – MeknessiHamida