【问题标题】:Spinner value not update微调器值未更新
【发布时间】:2021-06-24 12:31:54
【问题描述】:

这是我的国家微调器,在此我获取国家/地区 ID 并使用国家/地区代码传入 ApiGetState,我正在获取国家列表,在获得国家列表后,我想在 State Spinner 中设置它,我已完成所有操作,但如果我选择国家/地区第一次工作正常,但如果我更改国家/地区,状态微调器未更新,我是否错过了这段代码中的某些内容?

country.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            scountry = parent.getItemAtPosition(position).toString();
            String cCode = scountry.substring(0, scountry.indexOf("-"));
            countryCode = Integer.parseInt(cCode);
            ApiGetStates(countryCode);
        }

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

        }
    });

我在这里从服务器设置 StateSpinner 的值:-

public void onResponse(Call<StatesModel> call, Response<StatesModel> response) {
            if (response.isSuccessful()){
                StatesModel model = response.body();
                List<StatesModel.StatesModelDetail> list = model.getData();
                for (int i = 0; i < list.size(); i++){
                    stateData = list.get(i);
                    String stateName = stateData.getName();
                    String code = stateData.getId();
                    String finalname = code + "-" + stateName;
                    arrayList.add(finalname);
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), R.layout.simple_spinner_dropdown, arrayList);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    state.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                }

【问题讨论】:

  • 使用'adapter.notifyDataSetChanged();'在 for(....) 循环之后
  • 是的,因为@SandeepPareek 说在循环后使用adapter.notifyDataSetChanged();
  • 在ArrayList中添加数据后只调用一次notifyDataSetChanged。
  • @SandeepPareek 我做了这件事,但它不起作用。我做了什么请检查:- for (int i = 0; i (getContext(), R.layout.simple_spinner_dropdown, arrayList); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); state.setAdapter(适配器); adapter.notifyDataSetChanged();
  • 检查这个并删除额外的代码 -> geeksforgeeks.org/spinner-in-android-using-java-with-example

标签: android spinner android-arrayadapter


【解决方案1】:

我做了这件事。只需清除“ApiGetStates(countryCode);”之前的数组列表即可并调用“adapter.notifyDataSetChanged();”根据 Sandeep Pareek,在“for 循环”之外。例如:-

arrayList.clear();
ApiGetStates(countryCode);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多