【问题标题】:Android - how to get another value of selected item on spinnerAndroid - 如何在微调器上获取所选项目的另一个值
【发布时间】:2018-04-04 12:33:24
【问题描述】:

我有一个如下的休息响应,我需要将输出填充到微调器。我已经成功地将“名称”传递给微调器并且它有效。但我还需要获取“id”,以便可以使用“id”查询另一个休息请求。例如,我获取省 id,然后使用省 id 获取城市列表。

{
"code": 1000,
"message": "OK",
"data": [
    {
        "id": "3579010",
        "name": "Batu"
    },
    {
        "id": "3579020",
        "name": "Junrejo"
    },
    {
        "id": "3579030",
        "name": "Bumiaji"
    }
  ]
}

下面是安卓代码

public void initProvinceSpinner() {

    Call<GetProvinceResponse> call = apiService.getProvinceResponse();
    call.enqueue(new Callback<GetProvinceResponse>() {

        @Override
        public void onResponse(Call<GetProvinceResponse> call, Response<GetProvinceResponse> response) {

            ArrayList<GetProvinceResponseData> provinceResponseData = response.body().getData();
            List<String> listProvinceNameSpinner = new ArrayList<String>();
            //List<String> listProvinceIdSpinner = new ArrayList<String>();

            for(int i = 0; i<provinceResponseData.size();i++){
                listProvinceNameSpinner.add(provinceResponseData.get(i).getName());
            }

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, listProvinceNameSpinner);
            provinceToko.setAdapter(adapter);

        }

        @Override
        public void onFailure(Call<GetProvinceResponse> call, Throwable t) {

        }
    });
}

【问题讨论】:

    标签: android rest retrofit2


    【解决方案1】:

    试试这个

    获取身份证:

    provinceResponseData.get(spinner.getSelectedItemPosition()).getId();
    

    添加微调器监听器:

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            // call the service and pass the parameter
            serviceCall(provinceResponseData.get(spinner.getSelectedItemPosition()).getId());
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }
    
    });
    

    【讨论】:

    • 可能你的微调器名称是provincialToko..然后在回答中使用它而不是微调器
    • @rafitio 乐于助人 :) 编码愉快 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多