2017-06-20 5 views
0

J'ai un problème avec mon spinner. Mon spinner n'a aucune valeur lorsqu'il est sélectionné. Je ne sais pas quoi faire parce que j'avais appliqué tant de réponses et rien n'affecte mon code.

Voici mon code. J'utilise retrofit2.Android - Spinner n'obtient aucune valeur sélectionnée

private List<String> listKotaNegara= new GetData().getListKota(); 

    spinnerJenisKamar = (Spinner) findViewById(R.id.spinnerHotelJenisKamar); 
      dataAdapterJenisKamar = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listJenisKamar); 
      dataAdapterJenisKamar.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinnerJenisKamar.setAdapter(dataAdapterJenisKamar); 

      spinnerJenisKamar.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        String item = parent.getSelectedItem().toString(); 
        Toast.makeText(parent.getContext(), "Selected: "+item, Toast.LENGTH_LONG).show(); 
       } 

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

       } 
      }); 

Voici comment je GetData du serveur.

public List<String> getListKota(){ 
    apiservice.getListKota("liskota").enqueue(new Callback<ListKotaResponse>() { 

     @Override 
     public void onResponse(Call<ListKotaResponse> call, Response<ListKotaResponse> response) { 
      System.out.println("syalala : "+response.body()+", Response code; "+response.code()+", Response msg: "+response.message()); 
      final ListKotaResponse responses = response.body(); 
      List<ListNegara> listNegaras = responses.getListNegara(); 
      if(responses.getResult().equalsIgnoreCase("OK")) 
      { 
       System.out.println("masuk if"); 

       for(ListNegara n: listNegaras) 
       { 
        for(ListKotum k: n.getListKota()) { 
         listKotaNegara.add(k.getKota()+", "+n.getNegara()); 
        } 
       } 
      } 
     } 

     @Override 
     public void onFailure(Call<ListKotaResponse> call, Throwable t) { 
      Log.i("fail ",t.getMessage()); 
     } 
    }); 
    return listKotaNegara; 
} 

Merci beaucoup: ")

+0

Le Toast.makeText est-il exécuté? Mais avec l'élément vide ou il ne s'exécute pas lorsqu'il est sélectionné un élément? –

+0

Etes-vous sûr que la liste de vos listesKotaNegara n'est pas vide? La méthode getListKota est un appel asynchrone, cette liste peut être vide. Définissez l'adaptateur dans la méthode onResponse. – Praveen

+0

@BrankVictoria Le toast n'est pas exécuté ... Pas du tout ... Pas de blanc non plus. –

Répondre

0

Si votre liste est pas vide, donc quelque chose comme ceci:.

 private List<String> listKotaNegara= new GetData().getListKota(); 

     spinnerJenisKamar = (Spinner) findViewById(R.id.spinnerHotelJenisKamar); 
     dataAdapterJenisKamar = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listJenisKamar); 
     dataAdapterJenisKamar.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinnerJenisKamar.setAdapter(dataAdapterJenisKamar); 

     spinnerJenisKamar.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String item = listJenisKamar.get(position); 
       Toast.makeText(parent.getContext(), "Selected: "+item, Toast.LENGTH_LONG).show(); 
      } 

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

      } 
     }); 

J'espère que cela vous aidera

+0

J'ai essayé, mais ne se passe pas ... thx b4 –

0

J'ai trouvé ma solution.Je dois écrire le code ArrayAdapter à l'intérieur du onResponse dans Callback Retrofit 2.

Than k vous pour votre soutien. :)