【问题标题】:Spinner setOnItemSelectedListener is not invoked未调用微调器 setOnItemSelectedListener
【发布时间】:2023-04-08 12:47:02
【问题描述】:

我检查了这个问题的相关问题并尝试了一些建议,但它似乎仍然没有执行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) {

       }
   });

感谢您的帮助。 谢谢!

【问题讨论】:

  • 您的微调器是否填充了数据?
  • 是的,我的微调器填充了数据,只是当我尝试选择一个元素时没有任何反应

标签: android android-spinner onitemselectedlistener


【解决方案1】:

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

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

        }
    });
}

【讨论】:

  • 几乎我花了一天时间找到这个答案。真是一份好工作。谢谢@Patrick R
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多