2017-03-17 232 views
0

我检查了这个问题的相关问题,并尝试了一些建议,但似乎并没有执行setOnItemSelectedListener事件。这里是我的活动代码:微调setOnItemSelectedListener不被调用

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) { 

     } 
    }); 

我希望你的帮助。 谢谢!

+0

是你的微调填充数据? – rafsanahmad007

+0

是的我的微调组件填充数据,它只是当我尝试选择一个元素什么也没有发生 – MeknessiHamida

回答

0

在列表填充后设置微调器适配器。

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

相反的:

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

尝试;

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

你的建议没有奏效 – MeknessiHamida