【问题标题】:Android - Spinner doesn't get any selected valueAndroid - Spinner 没有获得任何选定的值
【发布时间】:2017-06-20 08:19:51
【问题描述】:

我的微调器有问题。我的微调器在选择时没有任何价值。我不知道该怎么做,因为我已经应用了这么多答案并且对我的代码没有任何影响。

这是我的代码。我正在使用改造 2。

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

                }
            });

这就是我从服务器获取数据的方式。

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;
}

非常感谢:")

【问题讨论】:

  • Toast.makeText 执行了吗?但是项目为空白还是在选择项目时不执行?
  • 您确定列表 listKotaNegara 不为空吗? getListKota 方法是异步调用,此时列表可能为空。在 onResponse 方法中设置适配器。
  • @BrankVictoria 吐司没有被执行......根本没有......也没有任何空白。
  • @Praveen listKotaNegara 不为空,我已在控制台上查看。我应该设置什么样的适配器?
  • 你能尝试像这样初始化你的微调器吗: dataAdapterJenisKamar = ArrayAdapter.createFromResource(this,listJenisKamar , android.R.layout.simple_spinner_item) 出于某种原因,当我使用微调器时,我会这样做。

标签: android android-spinner selecteditem


【解决方案1】:

如果您的列表不为空,则如下所示:

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

            }
        });

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我找到了我的解决方案。我必须在回调改造 2 的 onResponse 中编写 ArrayAdapter 代码。

    感谢您的支持。 :)

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 2023-03-02
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多