首页 > 解决方案 > GroupModel 不能转换为另一个模型

问题描述

我正在尝试将数据从 Web 服务拉到链接的微调器,同时没有数据到两个微调器。这部分代码给出了一个错误:

spinnerFleet.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            FleetModel selectedItem = (FleetModel) adapterView.getSelectedItem(); /*I think there was an error in this part of the code */
            int vgID = displayIdData(selectedItem);
            String jsonString = "{\"params1\":\"" + session_id + "\"," +
                    "\"params2\":\"5\"," +
                    "\"params3\":\"0\"," +
                    "\"params4\":\"0\"," +
                    "\"params5\":\"0\"," +
                    "\"params6\":\""+vgID+"\"," +
                    "\"params7\":\"0\"," +
                    "\"params8\":\"" + user_id + "\"}";
            new LoadSpinnerGroupTask().execute(jsonString);
        }

标签: androidjsonandroid-spinner

解决方案


显然,adapterView.getSelectedItem()返回 GroupModel,而不是 FleetModel。因此,如果 FleetModel 不扩展 GroupModel,则会抛出强制转换错误。

您的适配器项目中的数据类型是什么?把它改成 FleetModel,或者直接写GroupModel selectedItem = (GroupModel) adapterView.getSelectedItem();

试试这样:

spinnerFleet.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            FleetModel selectedItem = stateAdapter.getItem(i); /*I think there was an error in this part of the code */
            int vgID = displayIdData(selectedItem);
            String jsonString = "{\"params1\":\"" + session_id + "\"," +
                    "\"params2\":\"5\"," +
                    "\"params3\":\"0\"," +
                    "\"params4\":\"0\"," +
                    "\"params5\":\"0\"," +
                    "\"params6\":\""+vgID+"\"," +
                    "\"params7\":\"0\"," +
                    "\"params8\":\"" + user_id + "\"}";
            new LoadSpinnerGroupTask().execute(jsonString);
        }

推荐阅读